- ベストアンサー
検索機能で条件を指定しない場合の処理
PHPとMysqlでホームページの検索機能をつくっているのですが、わからないところがでてきたので質問させてください。 検索フォームに入力した文字列をGETで送信して、 完全一致するものをデータベースから表示させるというものなのですが、 フォームが空の場合はすべてを表示させたいのです。 フォームを空で送信すると アドレスには、たとえば「name=」というものが含まれてしまいます。 どのようにすればよいのでしょうか? よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ifでチェックするなら「WHERE 1」にandで条件をつないでいくのが妥当です。 $sql ="SELECT * FROM hoge WHERE 1 "; if(!empty($_GET["name"])) $sql.="AND (name='".$_GET["name"]."'"; 姑息な手段でよいならこんな感じも・・・ $sql=<<<eof SELECT * FROM hoge WHERE 1 AND (name='{$_GET["name"]}' OR '{$_GET["name"]}'='') eof; もちろん$_GETをそのままSQLに渡すのはなにかと危険ですので、きちんと インジェクション対策をしてください。