タイトルの通り、あいまいかつAND検索をしたいです。
たとえばフォームに
田中 太郎 会社
など複数単語を入力したときあいまい検索かつAnd検索の方法を教えてください。
単語と単語のスペースは半角でも全角でも検索できるようにしたいのです。
前回は動的にWHERE句とOR句をつけるようにして複数の入力フォームに対応できるようにしました。下のコードがそれです。
今回、下のコードを改造か全く書き直していきたいのですが
どのように行えばよろしいでしょうか?
LIKEの動的な生成の仕方がわからないです
'''lang-php
$pgsql = 'SELECT * FROM t_application';
//プレースホルダを使用する
//emptyが空でなかったらsqlを実行する
// 検索項目
$search_params = array('application_id', 'name', 'kana', 'mail');
$eq = array(); $val = array(); // foreachで回してempty判断 foreach($search_params as $value) { // POSTされていればWHERE作る if(!empty( $_POST[$value] )) { $eq[] = $value.' = ?'; $val[] = $_POST[$value]; } } $index = 0; $add_where = array(); // $add_or = array(); foreach ($eq as $value){ //最初だったらwhereをつける if ($index == 0) { // where 付与 $add_where[] = " where ".$value; } else { // or 付与 $add_where[] = " or ".$value; } $index++; } $pgsql = 'SELECT * FROM t_application '; foreach ( $add_where as $value ){ //foreachで$add_orの数だけ$add_orを足していく $pgsql .= $value; } $stmt = $dbh->prepare($pgsql); // ?に入れるデータを準備 $data = $val; //$data =array("$application_id","$name","$kana"); $stmt->execute($data); // 結果を取得 $rec = $stmt->fetch(PDO::FETCH_ASSOC);
'''
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。