Dépannage des erreurs de syntaxe PHP MySQL : noms de tables réservés
La création de plusieurs tables dans un seul script PHP peut entraîner des erreurs de syntaxe si le nom d'une table entre en conflit avec un mot réservé MySQL. Cette erreur peut être trompeuse, apparaissant comme un problème de syntaxe général même si le code semble correct.
Par exemple :
<code class="language-php">$sql = "CREATE TABLE `user` ( user_id INT UNSIGNED NOT NULL AUTO_INCREMENT, ... )"; $sql2 = "CREATE TABLE `order` ( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, ... FOREIGN KEY (user_id) REFERENCES `user` (user_id) )";</code>
Bien que la création de la table user
puisse réussir, la création de la table order
échoue souvent avec une erreur du type :
<code>Error creating table: 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 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' at line 1</code>
La solution : échapper aux mots réservés
Le problème se pose car order
est un mot réservé MySQL. Pour résoudre ce problème, entourez les mots réservés utilisés comme noms de table ou de colonne entre des backticks ( ` ). Le code corrigé est :
<code class="language-php">$sql2 = "CREATE TABLE `order` ( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, ... FOREIGN KEY (user_id) REFERENCES `user` (user_id) )";</code>
Bonne pratique : évitez les mots réservés
Une meilleure approche consiste à éviter d'utiliser entièrement des mots réservés. Choisissez des noms de table et de colonne descriptifs qui n'entrent pas en conflit avec les mots-clés MySQL. Cela évite les problèmes de syntaxe potentiels et améliore la lisibilité du code.
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!