在 PDO 驱动的 SQL 查询中,经常需要绑定包含 % 通配符的 LIKE 值。绑定此类值可确保防止 SQL 注入。但是,这样做的语法可能会令人困惑。
考虑查询:
select wrd from tablename WHERE wrd LIKE '$partial%'
在这里,您想要使用 PDO 绑定变量 $partial。当决定如何绑定 % 字符时,就会出现困境。
选项 1:
select wrd from tablename WHERE wrd LIKE ':partial%'
绑定 :partial to $ partial="somet".
选项 2:
select wrd from tablename WHERE wrd LIKE ':partial'
绑定 :partial 到 $partial="somet%".
选项 3(替代):
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
使用 MySQL CONCAT 函数执行字符串连接。
如果正在搜索的部分单词包含% 或下划线字符,需要特殊处理。解决方案涉及在 PDO 语句中使用 ESCAPE 子句:
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'"); $escaped = str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var); $stmt->bindParam(':term', $escaped);
此技术可确保在 LIKE 表达式中正确解释特殊字符。
以上是如何在 PDO 中将 LIKE 值与 % 字符绑定?的详细内容。更多信息请关注PHP中文网其他相关文章!