プレースホルダ(?)でも、名前付きプレースホルダ(: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 “);