[ SQL ] Erreur de syntaxe

Fermé
JEY - 8 juil. 2009 à 23:20
 le père - 9 juil. 2009 à 11:56
Bonjour,


j'obtiens le message:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , "0", "0" )' at line 1



avec ce code:
 $sql = 'INSERT INTO faisvoter_formulaires VALUES("", '.$titre1.', '.$titre2.', '.$photo1.', '.$photos2.', "0", "0" )';
	mysql_query($sql) or die(mysql_error()) ;





Je ne comprend pas ...

3 réponses

Bonjour

Je serais tenté de dire que comme ça a l'air correct, c'est sans doute $photos2 qui ne lui plaît pas. Vide sans doute
Mais quand tu auras réglé ce point là , tu tomberas sur un autre problèmes, tes valeurs devraient être entourées de " ou de ', ce qui n'est pas le cas (fais echo $sql pour t'en persuader) . Tu ferais mieux d'écrire

$sql = "INSERT INTO faisvoter_formulaires VALUES('','$titre1', '$titre2', '$photo1', '$photos2', '0', '0' )";
( note que j'ai inversé le rôle des ' et des ", ce qui n'était pas obligatoire, mais tellement plus simple à lire et à écrire. Ça évite tous les points de concaténation)
1
Merci le père, ca marche !

J'ai une question: Quel est la différence entre les " " et les ' ' ?


Merci
0
le père > JEY
9 juil. 2009 à 11:56
Quel est la différence entre les " " et les ' ' ?
C'est une bonne question. C'est le B.A. BA du PHP et malgré ça, on trouve 90% des gens qui se prennent les pieds dans le tapis avec. Ou qui s'en tiennent l'utilisation exclusive de l'un ou de l'autre pour des raisons quasi-religieuses.
Le détail technique est là pour chacune des façons d'écrire une chaîne :
https://www.php.net/manual/fr/language.types.string.php#language.types.string.syntax.single
https://www.php.net/manual/fr/language.types.string.php#language.types.string.syntax.double

Pour faire court : dans une chaîne entre " et ", les variables PHP ($variable) sont remplacées par leur valeur. Alors que dans une chaine entre ' et ', les variables ne sont pas interprétées.
essaye :
$variable="machin";
echo "Le mot est $variable";
echo 'le mot est $variable';
echo 'le mot est '.$variable; // ici on concatène 2 chaînes avec le . : la chaîne 'le mot est ' et la chaîne contenue dans $variable

Si tu veux mettre un " dans une chaîne entre " et ", il faut le précéder de \. Mais pas besoin de \ pour les ' : echo "'\"'";
Si tu veux mettre un ' dans une chaîne entre ' et ', il faut le précéder de \. Mais pas besoin de \ pour les " : echo '"\'"';

En espérant que je ne me suis pas trop planté dans les ' et les " !
0
socrateisabot Messages postés 8 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 9 juillet 2009
8 juil. 2009 à 23:30
Salut

essaie :

$sql=("INSERT INTO faisvoter_formulaire VALUES ('','.$titre1.'.$titre1.', '.$titre2.', '.$photo1.', '.$photos2.','0','0')";
0
Pas la peine d'essayer ça, les points dans '.$titre1.'.$titre1.', '.$titre2.', '.$photo1.', '.$photos2.' sont forcément une erreur. Il n'y a rien à concaténer puisqu'il y a une seule chaîne !
0