Php Where子句对tinyint不起作用

Php Where子句对tinyint不起作用,php,mysql,sql,Php,Mysql,Sql,我的MySQL查询有问题。我有一个表,其中一列的值默认为1,并由phpmyadmin而不是bool自动设置为tinyint1 执行查询时: SELECT * FROM book WHERE read = '1' 它给出了一个错误 但当我执行此查询时: SELECT * FROM book WHERE id = '77' 很好。我看不出有什么问题,只是tinyint可能无法通过这种方式进行搜索。有人能帮忙吗?我浏览过谷歌,但没有找到答案 读取是一个保留字。它一定是用backtick逃逸的 SE

我的MySQL查询有问题。我有一个表,其中一列的值默认为1,并由phpmyadmin而不是bool自动设置为tinyint1

执行查询时:

SELECT * FROM book WHERE read = '1'
它给出了一个错误

但当我执行此查询时:

SELECT * FROM book WHERE id = '77'
很好。我看不出有什么问题,只是tinyint可能无法通过这种方式进行搜索。有人能帮忙吗?我浏览过谷歌,但没有找到答案

读取是一个保留字。它一定是用backtick逃逸的

SELECT * FROM book WHERE `read` = 1
更新1

另一种选择是提供别名,例如

不能直接用作列名。READ是MySQL保留字,如果您仍然想使用READ作为列名,则在列名前后使用`反勾号'

SELECT * FROM book WHERE `read` = 1;

只需删除引号

因为它很小,所以你不应该用引号来表示字符串、字符或日期

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

如果它不起作用,那么您可以按照Ilion提到的方式进行转换,这很好

您可能需要尝试从read=1的书中删除“SELECT*”,希望引擎能够将列名用反勾号括起来。。无论保留与否;事实上,这就是我所做的,它起了作用。谢谢你的帮助。请参阅我的最新答案。您可以通过添加列别名来消除反勾号。
select * from `table_name` where `read`=1;