PDOを使って複数キーワード検索する方法について
PDOでプリペアードステートメントを使って複数キーワードで検索する方法を教えて下さい。
プリペアードステートメントは「?」形式ではなく、$stmt->bindParam(':sample', $samle);の形を使った方法を知りたいです。
環境
PHP:5.1.6
MySQL:5.0.77
処理の流れを作ってみました。途中から不明な点があるので変数化しないで記載してあります。
/*--PDOのプリペアードステートメントのbindParamを用いた場合--*/
$dbh = new PDO($DSN , $DBUSER , $DBPASS);
$query = 'SELECT * FROM table WHERE ';
$keyword_str = 'キーワードA キーワードB キーワードC';
//全角スペースを半角スペースに変換する処理(省略)
$keywords = split(' ',$keyword_str);
for($a = 0; $a <$keywords_num; $a++)
{
$kw[]=' 列名 like :kw'.$a;
}
$query.= join('AND', $kw);
//キーワードごとに「%キーワード%」の形を作る。
$kw0='%'.$keywords[0].'%';
$kw1='%'.$keywords[1].'%';
$kw2='%'.$keywords[2].'%';
$stmt = $dbh->prepare($query);
$stmt->bindParam(':kw0', $kw0);
$stmt->bindParam(':kw1', $kw1);
$stmt->bindParam(':kw2', $kw2);
$stmt->execute();
/*-----------------------------------------------------------*/
上記ソースの後半部分、
(1)
//キーワードごとに「%キーワード%」の形を作る。
のところを変数を使って実現しようと思うのですが、うまくいきません。
$keywords_num=count($keywords);
でキーワードの数を取得して
for($a = 0; $a <=$keywords_num; $a++) {
//作りたいソース
}
の形にすることは予想がつくのですが。
(2)
$stmt->bindParam(':kw0', $kw0);
$stmt->bindParam(':kw1', $kw1);
$stmt->bindParam(':kw2', $kw2);
の部分も上記と同じ形を考えていますが
$keywords_num=count($keywords);
でキーワードの数を取得して
for($a = 0; $a <=$keywords_num; $a++) {
//作りたいソース
}
「//作りたいソース」の部分がうまく作れません。
(1)(2)の作りたいソース部分の書き方を教えて下さい。
上記の考え方より良い(短い)ソースが作れる場合はそのソースを教えて下さい。
補足
keyword のホームページ再度確認しましたら2個設定してあります