PDO查询有多个像

时间:2014-10-31 20:35:47

标签: php mysql pdo

这在防止SQL注入方面是否安全?

$query = "select * from products where 1";
$searchterms = @preg_split("/[ ,]+/",trim($_REQUEST["textsearch"]));
foreach ($searchterms as &$st) {
    $query .= " and description like ?";
    $st = "%".$st."%";
}
$statement = $dbh->prepare($query);
$statement->execute($searchterms);

我通常使用bindParam()来做这件事,但这看起来简单得多,而且很可疑。

1 个答案:

答案 0 :(得分:5)

是的,这是安全的。从MySQL的角度来看,这与bindParam()完全相同。

使用bindParam()的原因是您希望通过引用绑定变量。除此之外,bindParam()唯一能做的就是让你无缘无故地编写更多的PHP代码。

PS:与您的问题相切,但使用LIKE进行全文搜索肯定会非常慢。您应该使用真正的全文索引或Sphinx搜索。请参阅我的演示文稿Full Text Search Throwdown