• ベストアンサー
※ 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カラムすべてに値が入っていないレコードも検索結果に含まれてしまいます。これを修正する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yossy_kt
  • ベストアンサー率50% (103/203)
回答No.2

試しに、下記のようにしてみてはいかがでしょうか? SELECT * ... (途中省略) ... AND ((photo1 is not null AND photo1 != '') OR (photo2 is not null AND photo2 != '') OR (photo3 is not null AND photo3 != '')) ... (以下省略); これでも引っかかるようなら、空文字列の問題ではないですね。

beterugius
質問者

お礼

ご回答、どうもありがとうございました。

beterugius
質問者

補足

ありがとうございました!!!^^ 写真なしのレコードが、検索に引っかからなくなりました。すごく良いアイデアをどうもありがとうございました。

その他の回答 (1)

  • yossy_kt
  • ベストアンサー率50% (103/203)
回答No.1

値が入っていないとは、nullということでしょうか? nullではないけど空文字列が入っているものが引っ掛かっている、ということではないですよね? 念のため。

beterugius
質問者

お礼

ご回答、どうもありがとうございました。

beterugius
質問者

補足

この3カラムに関しましては、デフォルト値をNULLに設定しています。 データベースクライアントは、phpMyAdminを使っております。 データベースのカラムを見ると、空白(真っ白)なので、値が何かは目には 見えませんが、恐らくNULLが入っているものと思います。

関連するQ&A