![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
like検索の複数キーワードで、プレースホルダを利用するやり方が分からないので教えてください
<やりたいこと>
・複数キーワード検索(東京 hoge)
<現状、出来ていること>
・1単語キーワード検索(東京)
<分からないこと>
・配列として処理すれば良いみたいなのですが、プレースホルダとの絡みでどうすればよいのか分かりません
<環境>
・MySQL
・PDO
<現状コード抜粋>
public function search($keyword)
{
$sql = "
SELECT a.*
FROM hoge a
WHERE (honbun LIKE :keyword)
";
$keyword ="%".$keyword."%";
No.1ベストアンサー
- 回答日時:
プレースホルダを使うにしても使わないにしても、SQL文を組み立てる時点ではキーワードの数は既知のハズです(空白やカンマでexplodeするなどの前処理は終わっているハズです)。
なので、必要な数だけプレースホルダを生成すればいいと思います。
// キーワードの組み立て
$temp = explode(' ', $_POST['keyword']);
$keyword = array();
foreach ($temp as $val) {
if (trim($val) !== '') { $keyword[] = $val; }
}
if (count($keyword) === 0) { die('no keyword'); } // 適宜処理するww
$sql = 'select * from a';
$where = array();
$bind = array();
$i = 0;
foreach ($keyword as $val) {
$where[] = '(honbun like ?)';
$bind[] = '%' . $val . '%';
}
$sql .= ' where ' . implode('and', $where);
// デバッグ用ここから
print $sql . "<hr />";
print_r($bind);
exit;
// デバッグ用ここまで
$stmt = $dbh->prepare($sql);
$stmt->execute($bind);
回答ありがとうございました。おかげで完璧に動作するようになりました!
>foreach ($keyword as $val) {
>$where[] = '(honbun like ?)';
>$bind[] = '%' . $val . '%';
>}
>$sql .= ' where ' . implode('and', $where);
特に、ここら辺が参考になりましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- その他(開発・運用・管理) 複数のサイトから、同じキーワードの出現の数をとれるサイトを教えてください。 1 2022/07/13 15:42
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- ヤフオク! ヤフオク タイトル 隠し技? 裏技? 1 2023/04/25 06:09
- 生物学 生物学と物理学、生物学と数学が交わる分野 について興味があるのですが、どう調べたらその分野について検 2 2022/10/02 14:05
- Amazon アマゾンで出版中の本の販売部数を伸ばすためには、どうすれば良いですか? 4 2022/08/18 23:30
- Excel(エクセル) エクセルVBAについて質問です。 2 2022/12/09 17:59
- Android(アンドロイド) Pixelのレコーダーで文字起こしした英文を検索する方法 4 2022/10/21 07:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPの記述で値が取れません。
-
データベースに存在するデータ...
-
一度検索されたものに対するソ...
-
SQL文の処理を関数化したいです
-
php mysql接続での書き方
-
繰り返しのコードをまとめて簡...
-
VBA ACCESS SQL...
-
DBから抜き出した値を表示する方法
-
SQL Serverからのvarchar型のデ...
-
php テーブルを作れない
-
phpのエラーについてです
-
例外処理
-
Function内でのMySQLデータベー...
-
Resource id #3 をフィールドの...
-
連想二次元配列のUNIXTIMEでの...
-
DBに入力されている値のセレ...
-
PHP 勤務時間の合計を出したい
-
sprintf関数での%Sが分かりませ...
-
XAMMPが起動しません。
-
VBAをつかってクエリの情報を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
ResultSetインターフェイスでの...
-
Pro*Cの構文エラー
-
insert1つの処理でもトランザ...
-
データベースに存在するデータ...
-
VBA ACCESS SQL...
-
INSERT,DELETEを同時に
-
MySQLのINSERT時にたまに重複に...
-
VB.NET エラーになる箇...
-
PHP&MySQLでの文字列+数列の一...
-
PHP初心者です。syntax error, ...
-
like検索の複数キーワードで、...
-
php MySQL で、更新ボタンを押...
-
php postgres Insert と updat...
-
チェックボックスからの複数検...
-
ASPでSQL文を使う場合に。
-
Q&Aサイトを作成していてURLの...
-
phpでforeach ($stmt as $row)...
-
php データベースから値を取得する
おすすめ情報