mysql PDO如何绑定LIKE

dmo*_*ain 19 mysql database mysqli pdo

在这个查询中

select wrd from tablename WHERE wrd LIKE '$partial%'
Run Code Online (Sandbox Code Playgroud)

我正在尝试将变量'$partial%'与PDO 绑定.不知道这%最终是如何工作的.

可不可能是

select wrd from tablename WHERE wrd LIKE ':partial%'
Run Code Online (Sandbox Code Playgroud)

在哪里:partial受到约束$partial="somet"

还是会的?

select wrd from tablename WHERE wrd LIKE ':partial'
Run Code Online (Sandbox Code Playgroud)

在哪里:partial受到约束$partial="somet%"

或者它会完全不同?

bob*_*nce 28

你也可以说:

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
Run Code Online (Sandbox Code Playgroud)

在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);
Run Code Online (Sandbox Code Playgroud)


kar*_*m79 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();
Run Code Online (Sandbox Code Playgroud)

使用问号参数:

$stmt = $dbh->prepare('select wrd from tablename WHERE wrd LIKE ?');
$stmt->execute(array('partial%'));
$rs = $stmt->fetchAll();
Run Code Online (Sandbox Code Playgroud)

http://www.php.net/manual/en/pdo.prepare.php