Execution de requête

Eléphant du PHP | 101 Messages

07 juin 2010, 13:00

Bonjour à tous,
J'ai un petit soucis pas compréhensible pour moi...
Alors lorsque que je copie/colle ma requête directement dans ma base, celle si me retourne des résultats (qui devraient être correctes) mais lorsque que je l'exécute via php, des résultats disparaissent.
Quelqu'un aurait une idée svp?
Voici ma requête
	
$req_prod_cat_parent = mysqli_query($link ,"SELECT DISTINCT `category_parent_id`
FROM jos_vm_category, jos_vm_category_xref
WHERE jos_vm_category.category_id = jos_vm_category_xref.category_child_id
AND jos_vm_category_xref.category_child_id
IN (SELECT category_id
FROM jos_vm_category
WHERE category_publish = 'Y')")or die (mysqli_error($link));
while($rows = mysqli_fetch_object($req_prod_cat_parent))
{
	$req_publ_cat_parent = "UPDATE `jos_vm_category` SET category_publish='Y' WHERE `category_id`=".$rows->category_parent_id.";";
	$result = mysqli_query($link, $req_publ_cat_parent);
}

ViPHP
ViPHP | 5462 Messages

07 juin 2010, 13:29

hello, a quelle niveau ca va pas, la première requête ou la 2eme, sinon normalement tu pourrais faire en 1 seule requete ce que souhaite

Eléphant du PHP | 101 Messages

07 juin 2010, 14:10

Ce doit être au niveau de la première je pense qui ne prend pas tous les enregistrements que je souhaite. Ou sinon c'est la deuxième qui ne parcours pas tous les enregistrements

ViPHP
ViPHP | 5462 Messages

07 juin 2010, 14:12

Ce doit être au niveau de la première je pense qui ne prend pas tous les enregistrements que je souhaite. Ou sinon c'est la deuxième qui ne parcours pas tous les enregistrements

sur ta 2eme requête fais aussi
$result = mysqli_query($link, $req_publ_cat_parent) or exit(mysqli_error($link));

Eléphant du PHP | 101 Messages

07 juin 2010, 14:15

Pas d'erreur. Mais les requêtes s'exécutent bien, je n'ai juste pas toutes les données que je veux...pourtant dans ma DB directement j'ai tout

Mammouth du PHP | 672 Messages

07 juin 2010, 14:26

Pas d'erreur. Mais les requêtes s'exécutent bien, je n'ai juste pas toutes les données que je veux...pourtant dans ma DB directement j'ai tout
Je ne comprends pas trop. Quelle(s) requête(s) passes-tu dans la DB ?
Logiquement, à partir du moment où tu reprends exactement les mêmes requêtes que celles passées dans le script tu dois avoir le même résultat...

A faire :
- Tester sans la deuxième requête - par exemple en faisant juste un echo $rows->category_parent_id, pour voir si la première requête renvoie le résultat attendu.
- Afficher les "deuxièmes" requêtes au lieu de les éxécuter. Vérifier qu'elles sont cohérentes.
- Afficher les "deuxièmes" requêtes, les exécuter (et afficher le résultat - ça doit être le nombre d elignes modifiées par la requête). Vérifier la cohérence.

Eléphant du PHP | 101 Messages

07 juin 2010, 14:32

Je ne comprends pas trop. Quelle(s) requête(s) passes-tu dans la DB ?
Celle-ci
SELECT DISTINCT `category_parent_id`
	FROM jos_vm_category, jos_vm_category_xref
	WHERE jos_vm_category.category_id = jos_vm_category_xref.category_child_id
	AND jos_vm_category_xref.category_child_id
	IN (SELECT category_id
	FROM jos_vm_category
	WHERE category_publish = 'Y')
Logiquement, à partir du moment où tu reprends exactement les mêmes requêtes que celles passées dans le script tu dois avoir le même résultat...
Je suis d'accord mais bizarrement la non...
A faire :
- Tester sans la deuxième requête - par exemple en faisant juste un echo $rows->category_parent_id, pour voir si la première requête renvoie le résultat attendu.
- Afficher les "deuxièmes" requêtes au lieu de les éxécuter. Vérifier qu'elles sont cohérentes.
- Afficher les "deuxièmes" requêtes, les exécuter (et afficher le résultat - ça doit être le nombre d elignes modifiées par la requête). Vérifier la cohérence.
J'ai déjà fait ça et c'est comme ça que j'ai vu qu'il n' y avait pas tout.

Eléphant du PHP | 101 Messages

07 juin 2010, 14:39

Par exemple quand je l'execute direct dans la DB j'ai
  • 0
    6
    14
    15
    16
    17
    18
    41
    42
    43
    44
    45
    46
    125
    136
    146
    150
    166
    167
et en faisant le echo j'ai
  • 6
    15
    16
    17
    18
    41
    42
    43
    44
    45
    46
    125
    146
    150
On peut voir qu'il en manque(0, 166, 167) entre autre

Eléphant du PHP | 314 Messages

07 juin 2010, 14:51

Bonjour,

L'informatique, c'est pas magique !

Si les requêtes sont identiques, les résultats aussi. Si les résultats sont différents, les requêtes ne sont pas identique.
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 101 Messages

07 juin 2010, 14:53

Et pourtant je fais un copier coller de la requête de mon code et ce, plusieurs fois donc la je ne comprends pas.

Eléphant du PHP | 101 Messages

07 juin 2010, 15:13

C'est good. En fait je faisais le copier coller après avoir exécuté le programme donc la DB avait changé. Désolé, mais merci qu'en même