前提・実現したいこと
データベースの複数条件対応の検索機能を作りたいです。
条件はGETで送っています。
php
1if(isset($_GET['area'])) { 2 $area = $_GET['area']; 3} 4 5if(isset($_GET['category'])) { 6 $category = $_GET['category']; 7} 8 9 $stmt = $dbh->prepare(' 10 SELECT 11 `id`, 12 `date`, 13 `level`, 14 `title`, 15 `body`, 16 `area`, 17 `category`, 18 `img_num`, 19 `etc`, 20 `del` 21 FROM 22 `data_article` 23 WHERE 24 `area` = :area AND 25 `category` = :category AND 26 `del` = 0 27 ORDER BY 28 `date` DESC; 29 '); 30 if(isset($area)) {$stmt->bindValue(":area",$area);} 31 if(isset($category)) {$stmt->bindValue(":category",$category);} 32 $stmt->execute(); 33 $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
上記のコードだと両方とも指定がある場合は検索結果がでるのですが、
areaのみ指定があり、categoryの指定がない場合は検索結果がでません。(areaが一致するものだけを返してほしいです。)
SQL文を丸ごと変数にいれて、条件によって切り替えるというやりかたで一応できたのですが、
条件が増えていくと大量のSQL文ができてしまいそうなので、
なにかスマートなやり方がないかと考えてみたのですが
例えば検索条件によってWHERE文だけの中身を変えるというな書き方はできますか?
もしくはこういった検索を行う場合の皆さんがよくやるやり方などを教えて頂けないでしょうか。
環境
xampp 8.0
php 8.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/19 16:18