RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作

[PHP]PDO、2つ以上の項目からLIKE検索

投稿日:

Book
データベースからPDOを使ってデータを抜き出したい!
そして「bindParam」で安全に検索しよう。そうしよう。

しかし、見事にハマりました。/(^o^)\

解決方法はこちら!

$pdo = new PDO('sqlite:users.db'); // DBを設定
// クエリ設定
$q = htmlspecialchars($_POST['q']); //クエリを入力
$q = str_replace(" ", " ", trim($q));
$words = explode(" ",$q);

// 解析
$tmp = [];
$tmp2 = [];
$wd = [];
$i = 0;
foreach($words as $word)
{
if(!empty($word))
    {
        $tmp[] = " content LIKE :word".$i." ";
        $tmp2[] = " title LIKE :word".$i." ";
        $wd[] = '%'.$word.'%';
        $i++;
    }
}

// SQL
if(count($tmp) > 0)
{
    $sql = "SELECT * FROM article WHERE (".implode("AND",$tmp).") OR (".implode("AND",$tmp2).") ORDER BY count DESC";
    $search_sql = $pdo->prepare($sql);
    foreach($wd as $key => $word){
        $search_sql->bindParam(':word'.$key, $word);
    }
    $search_sql->execute();
    // while
    while($Article = $search_sql->fetch(PDO::FETCH_ASSOC))
    {
        // 表示
    }
}

これの重要な点は18行目の「%検索文字%」にしているところです。

$wd[] = '%'.$word.'%';

そうすれば簡単に解決可能でした!

-Web制作

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Windows10(32bit)でのC言語およびC++のコンパイラ「MinGW」のインストールとテスト

32bitのWindows10環境でCとC++を開発するためのコンパイラ「MinGW」のインストールを行います。 私も初心者ですが、簡単にインストールできました! 日付:2018/09/09 OS:W …

no image

まとめ読み バージョン1.1.1のリリース

フリーソフト「まとめ読み」バージョン1.1.1のリリースを行いました。 まとめ読み ダウンロードページ 変更点 検索方法の変更 検索マッチングの先を、「タイトル&内容」「内容」の2つに変更しました。 …

[Meisyo]模擬戦の追加(テスト)vs 大阪桐蔭2018

模擬戦(NPC勝ち抜き戦)を追加しました! 模擬戦のコンセプトは「甲子園歴代優勝校と戦える場を」です。 経験値高め。もらえるアイテムも多いです。 挑戦には練習試合で7日に1回くらい拾える「試合チケット …

(VPSでつくる) Nginx Unit+venv+FlaskでHello World

連載第六回目です。 色々と設定を行ってきましたが、今の状態ではNginx(Webサーバー)上で動的なサイトを表示することはできません。 そのため、今回はNginx Unit(APサーバー)を用いて、簡 …

[Meisyo]練習難易度の不均衡是正への分析的アプローチ

「練習ごとに難易度が違いすぎるんですけど!!」という不満は把握しています。 ただ、これまでそこには触れてきませんでした。 なぜなら・・・まだデータ取れてないし、分析できないでしょ(言い訳) ・・・怠慢 …