Error in your SQL syntax [Résolu/Fermé]

Signaler
-
Messages postés
110
Date d'inscription
vendredi 7 mars 2014
Statut
Membre
Dernière intervention
19 septembre 2018
-
Bonjour,
j'ai une erreur dans la syntax que voici:
$req = $this -> bdd -> prepare("INSERT INTO ".$table." SET ".$ajouter." date_creaton = NOW()");


Voici l'erreur:
Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 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 'date_creaton = NOW()' at line 1

si j'enlève ." date_creaton = NOW()" à la fin de mon code ça fonctionne, mais j'ai pas la date.
Voila, si quelqu'un arrive à voir d'où vient l'erreur, merci à lui
Cordialement...


3 réponses

Messages postés
110
Date d'inscription
vendredi 7 mars 2014
Statut
Membre
Dernière intervention
19 septembre 2018
11
Bonjour,

Tu a mis INSERT au lieu d'UPDATE :
$req = $this -> bdd -> prepare("UPDATE ".$table." SET ".$ajouter." date_creaton = NOW()");
Utilisateur anonyme
Bonjour

Mars voulait peut-être vraiment faire un INSERT. Car avec un UPDATE sans WHERE, il va mettre à jour toutes les lignes de la base, ça m'étonnerait que ce soit ça qu'il veut.
La syntaxe INSERT INTO table SET champ='valeur' est parfaitement correcte.
Messages postés
110
Date d'inscription
vendredi 7 mars 2014
Statut
Membre
Dernière intervention
19 septembre 2018
11
Ah c'est une découverte pour moi, je ne connaissais pas cette syntaxe !!

Bonjour

Ça dépend de ce qu'il y a dans $ajouter.
S'il y a un simple nom de champ, il manque une valeur.
S'il y a une valeur, il manque le nom du champ.
S'il y a champ='valeur', il manque une virgule pour séparer ce SET dui suivant :
$req = $this -> bdd -> prepare("INSERT INTO ".$table." SET ".$ajouter.", date_creaton = NOW()");
oui c'est ça, il manquait une virgule.
Maintenant, ça marche.
Merci