试图做这样的事情...

WHERE username LIKE '%$str%'

...但是使用约束的参数,以准备好的发言,在公设辩护人.例如:

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

我已经试过无数的排列的单一的报价,并%的迹象,它只是得到我的.

我似乎记得摔跤与该在某一点之前,但是我不能找到任何引用。没有人知道怎么(如果?) 你可以这么做很好地在公设辩护人与名参数?

有帮助吗?

解决方案

啊。发现了一个评论php.net 这提醒我的答案;你需要配符你的价值之前bindParam进行评估,而不必担心引用。因此,例如这一工作的罚款:

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

其他提示

5年后,情况下其他任何人绊倒在此,有一种替代方法,我一发现。所接受的解决方案不是真正可行的针对我的情况,但这种方法似乎要做的工作,以及:

$query = $db->prepare("select * FROM table WHERE field LIKE CONCAT('%',:search,'%')");
$query->bindParam(':search', $str);
$query->execute();

我不知道是否会有效打击由于开销的调用 CONCAT 功能,但我想通过这作为一个选项。我们希望它将帮助的人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top