PHP PDO 准备语句 -- MySQL LIKE 查询
在 PHP 中使用 PDO 准备语句时,使用 MySQL 驱动程序实现 LIKE 查询可能具有挑战性。本文将探讨所需的语法并提供解决方案来帮助开发人员解决他们可能遇到的任何问题。
问题表述
开发人员正在尝试执行搜索使用 PDO 的 MySQL 驱动程序进行查询。该查询在直接通过 MySQL 客户端执行时工作正常,但在使用 PHP 执行时无法返回任何结果。
MySQL LIKE 查询的 PDO 准备语句语法
与字符串替换不同,PHP PDO 中的准备语句将数据与查询分开传输。因此,将值绑定到 LIKE 语句时应避免使用双引号或单引号。在 PHP PDO 中将值绑定到 LIKE 语句的正确语法如下:
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
不正确的尝试
开发人员尝试的以下语法不正确并且不会产生所需的结果:
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '"%' . $searchTerm . '%"', '1');
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
解决方案
要解决此问题,请使用以下代码:
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
说明
PDO 中的预备语句并不简单地执行字符串替换。相反,它们与查询分开处理数据。仅当将值嵌入到查询本身时才需要引号。通过省略准备好的语句绑定中的引号,PDO 能够正确地将 '%value%' 字符串传输到数据库以用于 LIKE 比较。
以上是如何在 PHP 中正确使用 PDO 准备语句和 MySQL LIKE 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!