• 締切済み

PHP複数検索について

こんばんは、PHPの初心者です。 PHPで複数条件検索について、インターネットでいろいろ調べたのですが、ほとんど単一条件の検索です。 質問は、添付ファイルをご参照ください。result.phpの構文を教えていただければ助かります。 以上、お願いいたします。

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

これって SQLの範疇な気がするんだけど・・・気のせい? http://www.php.net/manual/ja/refs.database.php

すると、全ての回答が全文表示されます。
回答No.1

質問者さんが聞きたかったのはSQL構文なのか、PHPのロジック部分なのか、なんだか良くわかりませんでしたが、とりあえず勢いで書きました。 下記のような感じでどうでしょう。 つまりLEFT JOINでテーブル同士を結合してやって、WHERE句のところで、入力された文字をANDで条件追加してやるようなイメージです。 SQL部分に関しては自信ありません・・・ <?php $SQL = "SELECT libraries.ISBN as isbn, libraries.bookname as book, publishers.shuppan_name as shuppan, libraries.chosha as chosha, libraries.hakkobi as hakko, formats.hangata_name as hangata FROM libraries LEFT JOIN publishers ON libraries.shuppansha=publishers.shuppan_id LEFT JOIN ON libraries.hangata=formats.hangata_id"; //POST値の検証、DB用にエスケープする処理は省略します。 $isbn; $book; $publisher; $author; $date; $format; //POST値が上記のように変数に与えられたとして、 $conditions = array(); if(!empty($isbn)) $conditions[] = "isbn = '$isbn'"; if(!empty($book)) $conditions[] = "book LIKE '%$book%'"; //図書名は部分一致とかでしょうか。 if(!empty($publisher)) $conditions[] = "publishers.shuppan_id = '$publisher'"; if(!empty($author)) $conditions[] = "chosha = '%$author%'"; //著者も部分一致にしとく。 if(!empty($date)) $conditions[] = "hakko = '$date'"; if(!empty($format)) $conditions[] = "formats.hangata_id = '$format'"; if(!empty($conditions)){ $SQL.=" WHERE ".implode(' AND ', $conditions); } $result = $DB->query($SQL); //DBはどんなオブジェクトとか関数を使うかわからないので適当に書いてます。 ?>

aoki2832jp
質問者

お礼

ご回答いただき、ありがとうございます。 実はSQL構文がわかりますが、どうPHPの構文に書けるかわからなかったです。 大助かりになりました。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A