在 SQL 查询中,LIKE 运算符用于模式匹配比较。使用 PDO 扩展执行查询时,正确绑定 LIKE 值以避免出现不明确的结果至关重要。
一种常见的场景是将部分字符串绑定到 LIKE 表达式,例如:
select wrd from tablename WHERE wrd LIKE '$partial%'
要使用 PDO 绑定它,错误的方法是简单地将 $partial% 替换为命名参数,例如:
select wrd from tablename WHERE wrd LIKE ':partial%'
这不起作用,因为 PDO 不会将 % 解释为通配符,从而导致错误的结果。相反,有几个选项可以实现所需的行为:
将参数与部分字符串的转义版本。例如:
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :partial"); $escapedPartial = $db->quote($partial . '%'); $stmt->bindParam(':partial', $escapedPartial);
使用 CONCAT 在查询中动态构建 LIKE 表达式() 函数,这可以避免转义的需要,因为通配符是添加在 MySQL 末尾的。例如:
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
如果部分字符串包含特殊字符,例如 %、_ 或 ,则可以使用 ESCAPE 子句指定占位符,取消 For 字符的特殊含义。例如:
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'"); $escapedTerm = str_replace(array('+', '%', '_', '\'), array('++', '+%', '+_', '\+'), $term); $stmt->bindParam(':term', $escapedTerm);
以上是如何在 SQL 查询中正确地将 LIKE 值与 PDO 绑定?的详细内容。更多信息请关注PHP中文网其他相关文章!