データベースから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.'%';
そうすれば簡単に解決可能でした!