[ SQL ] Erreur de syntaxe

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

  1. 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
    1. Merci le père, ca marche !

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

      Merci
      0
    2. @JEYQuel 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
  2. Salut

    essaie :

    $sql=("INSERT INTO faisvoter_formulaire VALUES ('','.$titre1.'.$titre1.', '.$titre2.', '.$photo1.', '.$photos2.','0','0')";
    0
    1. 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