首页 >数据库 >mysql教程 >如何在 PHP 中正确使用 PDO 准备语句进行 MySQL LIKE 查询?

如何在 PHP 中正确使用 PDO 准备语句进行 MySQL LIKE 查询?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-09 19:50:16439浏览

How to Correctly Use PDO Prepared Statements for MySQL LIKE Queries in PHP?

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

PDO 准备语句提供了一种安全有效的方法来使用动态参数执行 SQL 查询。使用 MySQL LIKE 查询时,采用正确的语法至关重要。

问题:

开发人员在 PHP 中使用 PDO 执行 MySQL LIKE 查询时面临着挑战,尽管查询在 MySQL 客户端中正常运行。代码无法返回结果,并且尝试了各种语法变体均未成功。

答案:

代码中的错误语法位于准备和执行语句中。问题是不必要地使用双引号和不正确的参数绑定。以下是更正后的代码:

$sql = 'SELECT   hs.hs_pk, 
          hs.hs_text, 
          hs.hs_did, 
          hd.hd_did, 
          hd.hd_text, 
          hv.hv_text, 
          hc.hc_text 
FROM      hs 
LEFT JOIN hd 
 ON       hs.hs_did = hd.hd_did 
LEFT JOIN hd 
 ON       hd.hd_vid = hv.hv_id 
LEFT JOIN hc 
 ON       hd.hd_pclass = hc.hc_id
WHERE     hs.hs_text LIKE :searchTerm
LIMIT 25';

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

说明:

准备好的语句通过将查询发送到数据库而不嵌入任何参数值来工作。参数单独发送,与​​数据库引擎进行绑定。在执行语句中的参数值中添加双引号是不正确的,因为如果需要,PDO 会自动将参数值括在引号中。

此外,LIKE 运算符需要搜索词周围的百分比以允许部分匹配。在错误的代码中,搜索词错误地用双引号而不是必要的百分号括起来。

通过更正这些语法错误,PDO 准备好的语句可用于成功执行 MySQL LIKE 查询。

以上是如何在 PHP 中正确使用 PDO 准备语句进行 MySQL LIKE 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn