在 PDO 中正确实现 LIKE 查询
尝试在 PDO 中执行 LIKE 查询时,确保正确的语法以检索准确的结果非常重要。在提供的查询中,问题在于 % 通配符的位置。
PDO 中 LIKE 查询的正确语法是在 $params 数组中包含 % 符号,而不是查询本身。下面是一个示例:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
如果 $params 数组中包含 % 符号,则生成的查询将如下所示:
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
但是,在提供的原始查询中,% 符号包含在查询本身中:
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'";
执行查询时,准备好的语句会引用已引用字符串内的值,从而导致查询不正确。通过将 % 符号移动到 $params 数组,预期的查询将被正确执行。
以上是PDO中使用LIKE时如何避免错误查询?的详细内容。更多信息请关注PHP中文网其他相关文章!