PDO / bindParam / bindValue で Likeがうまく動かない場合の注意点

プレースホルダ(?)でも、名前付きプレースホルダ(:name)でも理屈は同じ。
クエリー上に %?% というように%をつけてはいけない。%を付けるのは、バインドした変数の中で行う。

OK
$stmt = $db->prepare(“select * from statustable where item_name like ? order by status_date “);
$name = “%” . $param  . “%”;
$stmt->bindParam(1, $name , PDO::PARAM_STR);

NG
$stmt = $db->prepare(“select * from statustable where item_name like %?% order by status_date “);

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です