проблема с моим 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
ОБНОВЛЕНИЕ 1
Другой альтернативой является поставка ALIAS
, например
SELECT * FROM book a WHERE a.read = 1