Where子句工作对tinyint不起作用

时间:2013-01-11 05:34:36

标签: php mysql sql

我的MySQL查询存在问题。我有一个表,其中一列是“read”,默认值为“1”,由phpmyadmin而不是bool自动设置为tinyint(1)。

当我执行查询时:

SELECT * FROM book WHERE read = '1'

它出错了。

但是当我执行此查询时:

SELECT * FROM book WHERE id = '77'

很好。我没有看到任何问题,除非可能无法以这种方式搜索tinyint。有人可以帮忙吗?我走过谷歌但没有找到答案。

3 个答案:

答案 0 :(得分:4)

READ是保留字。它必须用反引号逃脱,

SELECT * FROM book WHERE `read` = 1

更新1

另一种选择是提供ALIAS,例如

SELECT * FROM book a WHERE a.read = 1

答案 1 :(得分:4)

您不能直接使用MySQL Reserved Words作为列名。 READ 是MySQL保留字,如果您仍然希望使用 READ 作为列名而不是在列之前和之后使用`(反引号)符号名称。

SELECT * FROM book WHERE `read` = 1;

答案 2 :(得分:2)

只需删除引号

即可

因为它很小,你不应该使用引号(将它们用于字符串,字符或日期)

select * from `table_name` where `read`=1;

如果它不起作用那么你可以像Ilion所说的那样进行施法(很好)