前提・実現したいこと
wordpressにて、mysqlからデータを取得する検索機能を作成しておりますが、「%」を入力し検索するとデータベースの全件が抽出されてしまいます。
※データベースは自作のものです。
該当のソースコード
php
1<?php 2 global $wpdb; 3//GETにて検索するキーワードを取得// 4 $search = isset($_GET['search']) ? $_GET['search'] : ""; 5 6//データベースの検索及び抽出// 7 if (empty($search)){ 8 $sql = "" ; 9 }else{ 10 $sql = $wpdb->prepare( 11 "SELECT * FROM データベース WHERE culum1 like '%%%s%%' OR culum2 like '%%%s%%'", 12 array(($search),($search))); 13 } 14 $rows = $wpdb->get_results($sql); 15 if($rows): ?> 16//検索結果をテーブルで表示// 17<table> 18 <tr> 19 <th>カラム1</th> 20 <th>カラム2</th> 21 </tr> 22<?php foreach ($rows as $row): ?> 23 <tr> 24 <td><?=($row->culum1)?></td> 25 <td><?=($row->culum2)?></td> 26 </tr> 27<?php endforeach; ?> 28</table> 29<?php endif; ?> 30
試したこと
ワイルドカードである「%s」の%が原因だと推測しておりますが、検索しても解決方法が見つかっておりません。インジェクション対策としても解決しておきたいと思っております。
初心者につき初歩的な質問とは思いますが、ご助力頂ければ幸いです。
回答2件
あなたの回答
tips
プレビュー