PHP MySQL 構文エラーのトラブルシューティング: 予約されたテーブル名
単一の PHP スクリプト内で複数のテーブルを作成すると、テーブル名が MySQL の予約語と競合する場合、構文エラーが発生する可能性があります。 このエラーは、コードが正しいように見えても、一般的な構文の問題として現れるため、欺瞞的な可能性があります。
例:
<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>
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 の予約語であるため、問題が発生します。 これを修正するには、テーブル名または列名として使用される予約語をバッククォート ( ` ) で囲みます。 修正されたコードは次のとおりです:
<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>
ベスト プラクティス: 予約語を避ける
より良いアプローチは、予約語の使用を完全に避けることです。 MySQL キーワードと衝突しない、わかりやすいテーブル名と列名を選択してください。これにより、潜在的な構文の問題が防止され、コードの可読性が向上します。
以上がPHP MySQL スクリプトで予約語を含むテーブルを作成すると構文エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。