PHP MySQL 文法錯誤疑難排解:保留表格名稱
如果表名與 MySQL 保留字衝突,則在單一 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) )";
雖然建立 user
表可能會成功,但 order
表格建立通常會失敗,並出現以下錯誤:
<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>
解:轉義保留字
出現這個問題是因為order
是MySQL保留字。 若要解決此問題,請將用作表名或列名的保留字括在反引號 ( ` ) 中。 更正後的代碼為:
$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) )";
最佳實務:避免保留字
更好的方法是完全避免使用保留字。 選擇不與 MySQL 關鍵字衝突的描述性表名和列名。這可以防止潛在的語法問題並提高程式碼可讀性。
以上是為什麼在 PHP MySQL 腳本中使用保留字建立表格時會出現語法錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!