Erreur de syntaxe dans la requête PHP PDO
Cette erreur se produit lorsqu'il y a une erreur de syntaxe ou une tentative d'accès à des données restreintes dans une requête SQL. Plus précisément, le message d'erreur indique :
"SQLSTATE[42000] : Erreur de syntaxe ou violation d'accès : 1064 Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MySQL pour connaître la bonne syntaxe à utilisez..."
Analysons le code fourni pour identifier la source de l'erreur :
$sql = "INSERT INTO messages (from, to, name, subject, message) VALUES (:from, :to, :name, :subject, :message)";
Dans cette requête, la colonne from est un mot-clé réservé dans MySQL. Les mots-clés ne peuvent pas être utilisés comme noms de colonnes sans les encadrer entre des guillemets (`). La syntaxe correcte est :
$sql = "INSERT INTO messages (`from`, `to`, name, subject, message) VALUES (:from, :to, :name, :subject, :message)";
De même, la colonne to est également un mot-clé réservé, elle doit donc également être entourée de guillemets. La requête mise à jour devient :
$sql = "INSERT INTO messages (`from`, `to`, name, subject, message) VALUES (:from, :to, :name, :subject, :message)";
En corrigeant la syntaxe autour des mots-clés réservés, l'erreur devrait être résolue et la requête devrait s'exécuter avec succès. Il est essentiel d'être conscient des conflits potentiels avec les mots-clés réservés lors de la dénomination des colonnes pour éviter de telles erreurs de syntaxe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!