如何使用 PDO 进行 LIKE 搜索?

Posted

技术标签:

【中文标题】如何使用 PDO 进行 LIKE 搜索?【英文标题】:How to do LIKE search with PDO? 【发布时间】:2010-10-25 13:50:25 【问题描述】:

为了使用 PDO 进行 LIKE 搜索,我需要在传递参数之前将 % 添加到参数中。

这行得通:

$qry = ' 
    SELECT product_id
    FROM cart_product
    WHERE product_manufacturer_num LIKE :search_string
';
$sth = $this->pdo->prepare($qry);
$sth->execute( array("search_string"=>'%'.$search_string.'%') );

对我来说,这更像是一种 hack,有没有更官方的方式来做到这一点?

【问题讨论】:

重复:***.com/questions/583336/… 【参考方案1】:

没关系。对我来说,这不像是黑客攻击。

difficulty 出现在您希望在搜索字符串中允许文字 %_ 字符,而不将其用作通配符时。

【讨论】:

我认为绑定参数的很大一部分是为了让 PDO / SQL 为你转义 % 或 _ 之类的东西......所以我很困惑。 @RonLugge:PDO 进行必要的转义/参数化以将字符串文字输入数据库。问题是LIKE 模式语法是一个单独的层,位于 SQL 字符串文字之上。 mysql 通过对两个层使用相同的转义字符来混淆这个问题,但它们在概念上是不相关的,在完全不同的级别上实现。

以上是关于如何使用 PDO 进行 LIKE 搜索?的主要内容,如果未能解决你的问题,请参考以下文章

使用 LIKE 进行 PDO 分页

在 bindParam 中使用 LIKE 进行 MySQL PDO 查询

PHP PostgreSQL PDO 无法使用 LIKE 绑定参数

mysql PDO如何绑定LIKE

如何在 PDO 中使用绑定参数进行模糊搜索?

PHP PDO 准备语句——MySQL LIKE 查询