2011-11-15 5 views
3

私は3つのカラム(key、id、loglevel)を持つSQLテーブルを持っています。キー列は主キーとして設定され、自動インクリメントされます。今、私は行タータは、「キー」の具体的な値に対応する選択してテーブルを更新したいプライマリキーを使用したSQLクエリ

key id loglevel 
1  223  5 
2  445  8 

はこれを想像してみてください。

私はラインを使用しています:

mysql_query("UPDATE Logs SET loglevel = 4 WHERE key = 2;"); 

しかし、これは動作しません。

私は

mysql_query("UPDATE Logs SET loglevel = 4 WHERE id = 445;"); 

にそれを変更すると、それが正常に動作します。しかし、 "id"ではなく "key"に基づいて更新したい。

私が間違っていることは何ですか?

+0

は、エラーメッセージを生成していますか?もしそうなら、それは何ですか? – toon81

答えて

6

MySQLキーではreserved wordであり、引用符で囲む必要があります。

"UPDATE Logs SET loglevel = 4 WHERE `key` = 2" 

また、私は強くあなたのクエリが失敗した場合、これはあなたがこれを自分で解決するために必要なヒントを与えていることとして、あなたはmysql_errorの値を確認することをお勧めします。

エラーコード:1064. SQL構文にエラーがあります。正しい構文については、MySQLサーバのバージョンに対応するマニュアルを参照して、1行目の 'key'近くで使用するようにしてください。

+0

うーん...エラーメッセージは出ませんでしたが、私はキーから名前を変更しました。 – user1028882

1

"key"はMySQLの予約語です(http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html参照)。主キーとして「キー」以外の言葉を使用することをお勧めします。後で「キー」という名前の列を持つのが混乱する可能性があり、「ID」を主キーとして使用するのが一般的な方法です。 ..

関連する問題