使用主键的SQL查询

use*_*882 3 sql indexing key sql-update

我有一个包含三列(key,id,loglevel)的SQL表.键列设置为主键,并自动递增.

想象一下:

key   id   loglevel
1     223     5
2     445     8
Run Code Online (Sandbox Code Playgroud)

现在我想通过选择对应于特定值"key"的行来更新表.

我正在使用这条线:

mysql_query("UPDATE Logs SET loglevel = 4 WHERE key = 2;"); 
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

当我改为

mysql_query("UPDATE Logs SET loglevel = 4 WHERE id = 445;");
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,我想基于"key"而不是"id"进行更新.

我有什么想法我做错了吗?

Mar*_*ers 6

在MySQL中,密钥是保留字,必须引用.

"UPDATE Logs SET loglevel = 4 WHERE `key` = 2"
Run Code Online (Sandbox Code Playgroud)

我还强烈建议您在查询失败时查看mysql_error的值,因为这可能会给您提供自己解决此问题的提示.

错误代码:1064.您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的"key"附近使用正确的语法