在此查询中
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%"的位置
或者它会是完全不同的东西?
发布于 2010-04-27 23:12:40
你也可以说:
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')在MySQL末端连接字符串,在这种情况下没有任何特殊的原因。
如果要查找的部分wrd本身可以包含百分号或下划线字符(因为它们对LIKE操作符有特殊意义)或反斜杠(根据ANSI SQL标准,MySQL在LIKE操作符 - 中错误地使用了它作为另一层转义层),事情就会变得更复杂。
希望这不会影响你,但如果你真的需要正确的情况,这里有一个混乱的解决方案:
$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);发布于 2010-04-27 23:00:25
$var = "partial%";
$stmt = $dbh->prepare("select wrd from tablename WHERE wrd LIKE :partial");
$stmt->bindParam(":partial", $var);
$stmt->execute(); // or $stmt->execute(array(':partial' => $var)); without
// first calling bindParam()
$rs = $stmt->fetchAll();使用问号参数:
$stmt = $dbh->prepare('select wrd from tablename WHERE wrd LIKE ?');
$stmt->execute(array('partial%'));
$rs = $stmt->fetchAll();http://www.php.net/manual/en/pdo.prepare.php
发布于 2017-03-06 20:37:15
您可以在准备好的语句之前使用addcslashes。我在mysql上进行了测试。
$value = addcslashes($value, '%');
$stmt = $db->prepare('select * from products where description like ?');
$stmt->execute(["$value%"]);https://stackoverflow.com/questions/2722136
复制相似问题