0

DBに問題があります。テーブルまたは挿入を更新するphpスクリプトがあり、フィールド名「show」があります。「showz」に変更しても、すべてがフィールド名「show」で機能します。ここでの不具合はphpコードの一部だと思います!

mysql_query("INSERT INTO db.table (mid, name, show) VALUES ('".$row['mid']."',     '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE name = '".$row['name']."',  show = '".$row['show']."'");

私はショーのものを「ショー」に入れようとしました、、show「ショー」は何も役に立ちません!

4

3 に答える 3

4

これshowは、が予約語であるためです(insertupdateなどorder)。ここで予約語について読むことができます:MySQL予約語

予約語をフィールド名として使用するには、次のようにバッククォート( `)でエスケープする必要があります。

mysql_query("INSERT INTO db.table (mid, name, `show`) VALUES ('".$row['mid']."',     '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE name = '".$row['name']."',  `show` = '".$row['show']."'");

これは、予約語の意味で使用するのではなく、フィールドとして扱うようにmysqlに指示します。

次のようなバッククォートを使用して、テーブル名とフィールド名を常にエスケープすることをお勧めします。

mysql_query("INSERT INTO `db`.`table` (`mid`, `name`, `show`) VALUES ('".$row['mid']."',     '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE `name` = '".$row['name']."',  `show` = '".$row['show']."'");
于 2012-12-20T14:32:40.503 に答える
4

showはMySQLの予約語であるため、テーブル名または列名として使用する場合は、バッククォート( `)で囲む必要があります。

`show`
于 2012-12-20T14:33:16.837 に答える
3

予約キーワードを使用しているバックティックを使用する

表9.2。MySQL5.0.96の予約語

ここに画像の説明を入力してください

だから次のように使用します

`show`

バックティックですべてのコロン名をワープするのは良いアプローチです

mysql_query("INSERT INTO `db`.`table` (`mid`, `name`, `show`) VALUES ('".$row['mid']."',     '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE `name` = '".$row['name']."',  `show` = '".$row['show']."'");

ノート

  1. ext/mysqlプレフィックスmysql_で指定されたすべての関数を提供するPHP拡張機能全体は、PHP v5.5.0で正式に非推奨になり、将来削除される予定です。したがって、PDOまたはMySQLi

よく読んで

  1. mysql拡張機能は非推奨であり、将来削除される予定です。代わりにmysqliまたはPDOを使用してください。
于 2012-12-20T14:33:37.997 に答える