尝试做这类事......
WHERE username LIKE '%$str%'
...但是在PDO中使用绑定参数来准备语句。 e.g:
$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam(':search', $str);
$query->execute();
我尝试过多次单引号和%符号的排列,它只是与我交叉。
我似乎记得曾经在某些时候与此摔跤,但我找不到任何参考资料。有没有人知道如何(如果?)你可以在PDO中使用命名参数做得很好吗?
答案 0 :(得分:15)
阿。在php.net上发现了一条评论,让我想起了答案;在评估bindParam之前,您需要对您的值进行通配符,而不必担心引用它。所以例如这很好用:
$str = "%$str%";
$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam(':search', $str);
$query->execute();
答案 1 :(得分:4)
$query = $db->prepare("select * FROM table WHERE field LIKE CONCAT('%',:search,'%')");
$query->bindParam(':search', $str);
$query->execute();
由于调用CONCAT
函数的开销,我不确定是否会出现性能损失,但我想将此作为选项传递。希望它会帮助别人。