MySQL PDO如何绑定LIKE

问题描述 投票:19回答:7

在此查询中

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%"的位置>>

或者会完全不同吗?

在此查询中,从表名中选择wrd,其中wrd喜欢'$ partial%',我试图将变量'$ partial%'与PDO绑定。不确定最后如何处理%。会选择wrd ...

php mysql pdo bindparam
7个回答
29
投票

您也可以说:

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

16
投票
$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();

0
投票

您可以在准备好的语句之前使用addcslashes。我在mysql上测试过。


0
投票

我认为(@bobince提供的)答案可以简化一些。


-1
投票

下面的代码仅显示数据库中的第一个关键字!


-2
投票

这是您应该这样做的方式

bindValue(':partial', '%' . $_GET['partial'] . '%');

-4
投票

谁编写了答案软件(可能是karim79):

$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();
© www.soinside.com 2019 - 2024. All rights reserved.