我有一个包含三列(key,id,loglevel)的SQL表。键列设置为主键,并自动递增。
想象一下:
key id loglevel
1 223 5
2 445 8
现在我想通过选择对应于特定值“key”的行来更新表。
我正在使用该行:
mysql_query("UPDATE Logs SET loglevel = 4 WHERE key = 2;");
然而,这不起作用。
当我将其更改为
时mysql_query("UPDATE Logs SET loglevel = 4 WHERE id = 445;");
它工作正常。但是,我想基于“密钥”更新,而不是“id”。
任何想法我做错了什么?
答案 0 :(得分:6)
在MySQL中,密钥是reserved word,必须引用。
"UPDATE Logs SET loglevel = 4 WHERE `key` = 2"
我还强烈建议您在查询失败时查看mysql_error的值,因为这可能会为您提供自己解决此问题所需的提示。
错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“key”附近使用正确的语法
答案 1 :(得分:1)
“key”是MySQL中的保留字(参见http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)。我建议使用除“key”之外的单词作为主键,因为稍后可能会混淆一个名为“key”的列而另一个名为“id”的常用约定是使用“id”作为主键。 ..