
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!
La différence entre bond0 et bond1
La différence entre l'hibernation et le sommeil de l'ordinateur
niveau d'isolement des transactions par défaut de MySQL
utilisation de la fonction de tri de Python
Introduction à la signification de javascript
Le concept m2m dans l'Internet des objets
commutation de carte graphique y460
Quelles sont les plateformes de trading de devises virtuelles ?