PDO 準備済みステートメントを使用してキーワード検索を作成しようとしています。理想的には、LIKE 演算子を使用して、フィールド値内の部分文字列を検索したいと考えています。これが私のコードです:
$statement = $this->db->prepare("select * from whatever where title like ? or author like ?");
$statement->execute(array("%$titleKeyword%","%$authorKeyword%"));
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
残念ながら、これを試してみると $rows は常に空です。ただし、SQL を phpMyAdmin にコピーし、「%keyword%」をそれぞれの ? シンボル、それは正常に動作します(使用されたキーワードが存在する場合に結果が得られます)。
次のコードも試しました。
$statement = $this->db->prepare("select * from whatever where title like :titleKeyword or author like :authorKeyword");
$statement->bindValue(":titleKeyword", '%'.$titleKeyword.'%', PDO::PARAM_STR);
$statement->bindValue(":authorKeyword", '%'.$authorKeyword.'%', PDO::PARAM_STR);
$statement->execute();
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
SQL自体(事前に準備されたステートメント)ではなく、パラメーターをバインドするときに%を含めることになっている別の質問を読みましたが、それは機能しません。
(サニタイズを行った後) キーワードを SQL に直接挿入するという手段に頼ることもできますが、準備済みステートメントを使用したいと考えています。どんな助けでも大歓迎です。