3

MySQL クエリに問題があります。デフォルトで値が「1」である「読み取り」列の1つを含むテーブルがあり、ブール値ではなくphpmyadminによって自動的にtinyint(1)に設定されます。

クエリを実行すると:

SELECT * FROM book WHERE read = '1'

エラーが発生します。

しかし、このクエリを実行すると:

SELECT * FROM book WHERE id = '77'

それは結構です。tinyint をそのように検索できないことを除けば、問題はありません。誰か助けてくれませんか?私はグーグルを旅しましたが、答えが見つかりませんでした。

4

3 に答える 3

4

MySQL予約語を列名として直接使用することはできません。READはMySQLの予約語です。列名の前後に`(バックティック)記号を使用するよりも、列名としてREADを使用する場合。

SELECT * FROM book WHERE `read` = 1;
于 2013-01-11T05:41:32.503 に答える
4

READは予約語です。バッククォートでエスケープする必要があります。

SELECT * FROM book WHERE `read` = 1

更新 1

別の代替手段はALIAS、例えば提供することです

SELECT * FROM book a WHERE a.read = 1
于 2013-01-11T05:35:25.747 に答える
3

引用符を削除するだけです

tinyint であるため、quote を使用しないでください (文字列、文字、または日付に使用してください)。

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

それが機能しない場合は、Ilion が述べたようにキャストを行うことができます (それは良いことです)。

于 2013-01-11T05:47:51.627 に答える