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中文网其他相关文章!