- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLの文法について)
MySQLの文法について
このQ&Aのポイント
- $sql = "SELECT * FROM profile WHERE (todouhuken='$todouhuken1' OR todouhuken='$todouhuken2' OR todouhuken='$todouhuken3') AND (age between $begin_age and $end_age) AND (photo1 is not null OR photo2 is not null OR photo3 is not null) AND seibetsu=2;";
- このSQL文では、画像カラム(photo1, photo2, photo3)のどれかに画像ファイル名が入っていれば検索に引っかかるようになっています。
- しかし、データベース上で実際にこの3カラムすべてに値が入っていないレコードも検索結果に含まれてしまいます。これを修正する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
試しに、下記のようにしてみてはいかがでしょうか? SELECT * ... (途中省略) ... AND ((photo1 is not null AND photo1 != '') OR (photo2 is not null AND photo2 != '') OR (photo3 is not null AND photo3 != '')) ... (以下省略); これでも引っかかるようなら、空文字列の問題ではないですね。
その他の回答 (1)
- yossy_kt
- ベストアンサー率50% (103/203)
回答No.1
値が入っていないとは、nullということでしょうか? nullではないけど空文字列が入っているものが引っ掛かっている、ということではないですよね? 念のため。
質問者
お礼
ご回答、どうもありがとうございました。
質問者
補足
この3カラムに関しましては、デフォルト値をNULLに設定しています。 データベースクライアントは、phpMyAdminを使っております。 データベースのカラムを見ると、空白(真っ白)なので、値が何かは目には 見えませんが、恐らくNULLが入っているものと思います。
お礼
ご回答、どうもありがとうございました。
補足
ありがとうございました!!!^^ 写真なしのレコードが、検索に引っかからなくなりました。すごく良いアイデアをどうもありがとうございました。