微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何同时使用 LIKE 和准备好的语句?

如何解决如何同时使用 LIKE 和准备好的语句?

我正在创建一个机器人,用户可以输入电影的名称,结果应该通过在 sql 表中搜索并找到正确的电影名称显示,所以我在 PDO 中使用了准备好的语句,但我想当用户输入它显示的电影名称不完整,所以我希望它不区分大小写并找到匹配项。 我正在使用 MysqL 驱动程序。

在此之前,sql 查询是这样的

还要注意这是 PHP 脚本中的一个字符串

"SELECT * FROM movies WHERE name = :name LIMIT 5"

但后来我想使用我上面向您解释的方式,我知道它不区分大小写。

"SELECT * FROM movies WHERE name LIKE :name" . "'%' LIMIT 5"

但我不认为这会正常工作,所以我应该如何编写这个查询以按照我在开始时解释的那样工作?

应该使用不同的关键字,例如 REGEXP 吗?

解决方法

让我假设您使用的是 MySQL(基于 regexp 参考)。

然后您可以使用:

WHERE name LIKE CONCAT(:name,'%')

在其他数据库中,您可以使用标准字符串连接运算符 ||

注意:这通常在应用程序级别处理,因此 :name 在应用程序中被赋予 '%'。然后你的原始代码就可以工作了。

类似的方法适用于正则表达式,但逻辑是:

WHERE name LIKE CONCAT('^',:name)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。