gpt4 book ai didi

php - 如何使用 PDO 扩展绑定(bind) LIKE 值?

转载 作者:行者123 更新时间:2023-11-29 22:00:05 27 4
gpt4 key购买 nike

在此查询中

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

我正在尝试将变量 '$partial%' 与 PDO 绑定(bind)。不确定最后的 % 是如何工作的。

会不会

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

其中 :partial 绑定(bind)到 $partial="somet"

或者会是

select wrd from tablename WHERE wrd LIKE ':partial'

其中 :partial 绑定(bind)到 $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);

关于php - 如何使用 PDO 扩展绑定(bind) LIKE 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com