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

メールアドレスが公開されることはありません。

関連記事

no image

PHPでPC・スマホ・タブレット・携帯を判別するおすすめの方法

今まさにスマートフォン時代になってきています。 PHPでPCやスマートフォン、タブレット、携帯を判別してみましょう。 ※この内容は2013年当時の方法です。 普通の判別法 $_SERVER[‘HTTP …

[Meisyo]ゲームのUIを改善し続ける意味とは

1ヶ月に3回はUIが変わっているMeisyo。 何故変え続けているのか。 説明しよう! 今悪いポイント 簡単に言うと新規登録ユーザーさんが定着しない! チュートリアルでも最終ステップまでの到達率が75 …

no image

ユーザーのフォントを統一できる、Google Fontsの紹介

Web制作で困ることが多いのは「ユーザー全員が使えるフォントがない」ことでしょう。 ユーザーのパソコンに入っているフォントによって見え方が異なるためです。 つまり「見え方が統一できない」ことが多いです …

[Meisyo]ver0.03へのアップデート

名将と呼ばれた者達、アップデートを行います。 大幅な変更をしたため、バージョンを0.02から0.03へ変更します。 変更点 1・各種表示の不具合の修正、改善 2・投手起用方法の不具合の修正 3・試合の …

手書き数字診断士(機械学習)ver 0.1 K近傍法を使ってみた

手書き文字の判定精度が全然上がらないので、他の手法を試してみました。 sklearnの開発元によると、以下の方法が良いらしい・・・。 なるほど!SVCで上手くいかない → K近傍法だな! 早速実装 p …