Page 1 sur 1
Help ! Erreur de syntaxe impossible à trouver
Posté : 27 mars 2006, 17:26
par dmx-moteur
Bonjour,
Je m'arrache les cheveux depuis une heure mais je n'arrive pas à trouver où ma syntaxe pêche :
Code : Tout sélectionner
$strSQL= "SELECT * FROM clients WHERE clients.code_client IN (SELECT code_client FROM web WHERE type LIKE %,". $_POST['type'] . ",% AND specialite LIKE %,".$_POST['specialite'].",% AND fidelite=".$_POST['fidelite'].")";
Message d'erreur quand je teste sur une requête lambda :
Erreur de syntaxe près de 'SELECT code_client FROM web WHERE type LIKE %,7,% AND speciali' à la ligne 1
Quelqu'un a-t-il de meilleurs yeux que les miens !! ??
Merci par avance.
Posté : 27 mars 2006, 17:28
par ouckileou
Commence déjà par afficher le SQL
généré
echo $strSQL;
Il doit manquer des quotes autour de la valeur du LIKE :
Posté : 27 mars 2006, 17:36
par dmx-moteur
J'ai mis les quotes et affiché le SQL comme conseillé mais cela ne m'avance pas plus (attention j'ai changé l'ordre des facteurs pour voir !) :
Code : Tout sélectionner
SELECT * FROM clients WHERE clients.code_client IN (SELECT code_client FROM web WHERE fidelite=1 AND type LIKE '%,7,%' AND specialite LIKE '%,1,%') Erreur de syntaxe près de 'SELECT code_client FROM web WHERE fidelite=1 AND type LIKE '' à la ligne 1
Je me demande si ce n'est pas la premiere partie de ma requête qui cloche :
En attendant, je trouve que le debug du SQL laisse plutôt à désirer dans le couple PHP/MySQL !!
Posté : 28 mars 2006, 08:41
par ouckileou
Quelle est la version de MySQL utilisée ?
Re: Help ! Erreur de syntaxe impossible à trouver
Posté : 28 mars 2006, 09:58
par zeus
Il y a une astuce pour lire les messages d'erreur MySQL : le code SQL affiché commence à l'erreur détectée. Tu sais donc que ton erreur se situe juste avant ta sous-requete.
Code : Tout sélectionner
Erreur de syntaxe près de 'SELECT code_client FROM web WHERE type LIKE %,7,% AND speciali' à la ligne 1
Ensuite, comme le laisse entendre
Ouckileou, les sous-requete ne sont pas gérées par toutes les versions de MySQL, ce qui explique très probablement ton problème ...
Posté : 28 mars 2006, 15:01
par dmx-moteur
Ma version de MySQL est 4.0.15. Merci Zeus et Ouckiléou : effectivement ça ne sert à rien de m'escrimer sur ce problème, si c'est tout simplement une histoire de compatibilité de version avec les sous-requêtes...
En regardant ma requete, il me semble impossible que l'erreur soit en plein milieu du nom de ma colonne.
Je dois dire que je ne suis modérément à l'aise avec le SQL. Existe-t-il un équivalent à ma requête sans utiliser de sous-requête...
Posté : 28 mars 2006, 15:13
par dmx-moteur
J'ai trouvé : il faut faire une jointure !! Je suis un peu à la ramasse aujourd'hui !

L'info se trouve ici :
http://dev.mysql.com/doc/refman/5.0/fr/ ... eries.html
Posté : 28 mars 2006, 16:13
par ouckileou
Résolu alors ?
