为什么PDO准备语句无法通过LIKE查询返回结果?

DDD
发布: 2024-11-01 12:50:29
原创
453 人浏览过

Why Does PDO Prepared Statement Fail to Return Results with LIKE Query?

PHP 中的 PDO 准备语句:MySQL LIKE 查询的问题

PHP 与 MySQL 的 PDO 类提供了一种使用参数化查询执行 SQL 语句的机制,提高安全性和性能。但是,用户在使用 LIKE 查询时可能会遇到困难。

问题:PDO 准备语句未使用 LIKE 查询返回结果

尝试执行类似于以下内容的查询时使用PDO:

<code class="mysql">SELECT *
FROM hs
WHERE hs_text LIKE "%searchTerm%"</code>
登录后复制

用户可能会发现没有返回结果。

解决方案:正确的参数化

问题在于参数化不正确搜索词的。在 PHP 中,准备好的语句使用命名占位符,这需要不同的语法。 LIKE 查询的正确参数化是:

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

解释:

准备好的语句将数据与查询分开并使用占位符。因此,不需要将搜索词用双引号括起来或执行字符串连接。

其他常见错误:

<code class="php">WHERE hs_text LIKE :searchTerm
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));  // Incorrect</code>
登录后复制
  • 这种方法是不正确,因为它添加了不必要的双引号。
<code class="php">WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm));  // Incorrect</code>
登录后复制
  • 参数化不需要使用 CONCAT 将搜索词包含在查询中。

通过使用正确的参数化,您可以在 PHP 中使用 PDO 准备语句成功执行 LIKE 查询。

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

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