Там, где работает статья, не работает на tinyint

проблема с моим MySQL-запросом. У меня есть таблица с одним из столбцов «read», где значения «1» по умолчанию и автоматически устанавливаются на tinyint (1) с помощью phpmyadmin вместо bool.

Когда я выполняю запрос:

SELECT * FROM book WHERE read = '1' 

Это дает ошибку.

Но когда я выполняю этот запрос:

 SELECT * FROM book WHERE id = '77' 

Это нормально. Я не вижу никаких проблем, кроме того, что, возможно, tinyint не может быть найден таким образом. Кто-то может помочь? Я путешествовал по Google, но не нашел ответов.

просто удалите кавычки

поскольку это tinyint, вы не должны использовать цитату (используйте их для строк или символов или дат)

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

если он не работает, вы можете сделать кастинг, как упоминалось Илион (это хорошо)

Вы не можете использовать MySQL зарезервированные слова непосредственно в качестве имени столбца. READ – это MySQL Reserved Word, если вы все еще хотите использовать READ в качестве имени столбца, чем вы используете знак `(backtick) до и после имени столбца.

 SELECT * FROM book WHERE `read` = 1; 

READ – это зарезервированное слово. это должно быть бегство с backtick,

 SELECT * FROM book WHERE `read` = 1 
  • Списки зарезервированных слов MySQL

ОБНОВЛЕНИЕ 1

Другой альтернативой является поставка ALIAS , например

 SELECT * FROM book a WHERE a.read = 1