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 :

Code : Tout sélectionner

LIKE '%,7,%'

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 :

Code : Tout sélectionner

SELECT * FROM clients WHERE clients.code_client IN ...
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 ? :)