我正在尝试将UPDATE用于我的MySQL数据库。我使用以下SQL代码:
$sql = "UPDATE ToDo
SET Checked = -1
WHERE Index = 1";
当我使用此代码时,我收到以下错误消息:“您的SQL语法中有错误;请检查与您的MySQL服务器版本对应的手册,以便在第3行的'Index = 1'附近使用正确的语法“
但是当我使用
时$sql = "UPDATE ToDo
SET Checked = -1
WHERE Text = 'asdf'";
一切正常。
我的数据库有一个名为“ToDo”的表,有3个列:索引(int,主键,auto_increment),Checked(bool)和Text(文本)。
难道你不能“在哪里”使用主键还是忘记了其他内容?
希望你能帮助我。
答案 0 :(得分:9)
尝试添加反引号:
UPDATE ToDo
SET `Checked` = -1
WHERE `Index` = 1";
索引是保留字:
答案 1 :(得分:5)
index
是MySQL的reserved word。你需要通过添加这样的反引号来逃避名称:
$sql = "UPDATE ToDo
SET Checked = -1
WHERE `Index` = 'asdf'";
答案 2 :(得分:0)
为了确保MySQL了解您正在讨论列名而不是保留字,您始终可以找到列名tablename.columnname。 在SELECT查询中也可以使用快捷方式:
UPDATE ToDo SET ToDo.Checked = -1 WHERE ToDo.Index = 1
SELECT u.Index FROM users u
另外,我建议不要在表格和列中使用驼峰个案。这被证明是错误的根源,并且在大多数情况下没有真正的好处。
答案 3 :(得分:-2)
布尔值为0或1,而不是-1。尝试使用0或1进行Checked,让我们知道会发生什么。