PDO查询有多个像

Tim*_*Sim 3 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);
Run Code Online (Sandbox Code Playgroud)

我通常这样做,bindParam()但这似乎更简单,它是可疑的.

Bil*_*win 5

是的,这是安全的.这bindParam()与MySQL的观点完全相同.

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

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

  • 该死的,总是值得学习的东西.:)这个特殊的数据库不太可能有超过1000种产品,但仍然......为什么要马虎? (2认同)
  • 哇7秒vs 0.2秒(全文MyISAM)?我卖了 (2认同)