質問: $sql."name LIKE :keyword"; } ```
回答: ソースコード上に3か所誤りがあります。 1. `$keyword2[$i]`の先頭と末尾に引用符が付いている 2. バインドする変数名が全て`':holder'`になっている(`$holder`を使用していない) 3. `$sql = $sql."name LIKE :keyword";`に`$i`がない 例外が発生している直接の原因は2.で設定している変数名`:holder`と、3.で実際に記述されている変数名`:keyword`が食い違っているためと思われます。両方を`:keyword0`, `:keyword1`, `:keyword2`...となるように修正しなくてはなりません。 上記を直した場合も、1.でバインド変数に指定されている値が誤っているので意図した検索結果にはならないでしょう。SQL文に`'%abc%'`と書いた場合は`%abc%`という文字列を表しますが、PHP上で設定しているのは`'%abc%'`という値の文字列ですので先頭と末尾に引用符があるnameしか条件に合致しません。 逆に言うと`$keyword$i]`の値に引用符や他の演算子が含まれていたとしても[SQLの意味が変わることはありません。