在这个查询中

select wrd from tablename WHERE wrd LIKE '$partial%'


我正在尝试将变量'$partial%'与PDO绑定。不确定最后如何与%一起使用。

可不可能是

select wrd from tablename WHERE wrd LIKE ':partial%'


:partial绑定到$partial="somet"的位置

还是会

select wrd from tablename WHERE wrd LIKE ':partial'


:partial绑定到$partial="somet%"的位置

还是会完全不同?

最佳答案

您还可以说:

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')


在MySQL末尾进行字符串连接,并不是在这种情况下有任何特殊原因。

如果要查找的部分wrd本身可以包含百分比或下划线字符(因为这些字符对LIKE运算符具有特殊含义)或反斜杠(MySQL用作LIKE的另一种转义层),则事情会变得有些棘手。运算符-根据ANSI SQL标准,不正确)。

希望这不会对您造成影响,但是如果您确实需要解决此问题,则可以使用以下凌乱的解决方案:

$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);

10-06 11:30