为什么我的 PHP PDO 准备语句与 MySQL LIKE 查询没有返回结果?

DDD
发布: 2024-10-31 10:41:02
原创
964 人浏览过

Why does my PHP PDO prepared statement with MySQL LIKE query return no results?

PHP PDO 准备语句 - MySQL LIKE 查询

问题:
使用以下命令执行 MySQL LIKE 查询时PHP 的 PDO,搜索没有结果。

查询:

<code class="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;</code>
登录后复制

PHP 代码:

<code class="php">$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.'%"'));</code>
登录后复制

解决方案:
错误在于execute()方法中分配给:searchTerm参数的值。使用预备语句时不需要双引号。

更正的 PHP 代码:

<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
登录后复制

说明:
预备语句处理数据与查询分开。它们不执行字符串替换。仅当将值直接嵌入到查询中时才会添加引号。

以上是为什么我的 PHP PDO 准备语句与 MySQL LIKE 查询没有返回结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!