如何在PDO中使用绑定参数进行模糊搜索?

Pol*_*nby 11 php sql pdo

试着做这种事......

WHERE username LIKE '%$str%'
Run Code Online (Sandbox Code Playgroud)

...但是在PDO中使用绑定参数来准备语句.例如:

$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam(':search', $str);
$query->execute();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多单引号和%符号的排列,它只是与我交叉.

我似乎记得以前在某些时候与此摔跤,但我找不到任何参考.有没有人知道如何(如果?)你可以在PDO中使用命名参数很好地完成这项工作?

Pol*_*nby 15

啊.在php.net上发现了一条评论,让我想起了答案; 在评估bindParam之前,您需要对您的值进行通配符,而不必担心引用它.所以例如这很好:

$str = "%$str%";
$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam(':search', $str);
$query->execute();
Run Code Online (Sandbox Code Playgroud)