如何解决 PDO 中使用 LIMIT 子句传递数组参数时出现的错误?

Linda Hamilton
发布: 2024-10-23 19:46:31
原创
624 人浏览过

How to Resolve Error When Passing Array Parameters with LIMIT Clause in PDO?

使用 LIMIT 子句传递 PDO 参数数组

简介:

使用 PDO 时,同时传递参数数组和使用 LIMIT 子句可能具有挑战性。本文提供了此问题的解决方案。

问题陈述:

给出以下 SQL 查询:

SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%')
LIMIT :limit1, :limit2
登录后复制

您想要执行此操作使用参数数组进行查询,如下所示:

$stmt->execute($array);
登录后复制

但是,对 LIMIT 参数(:limit1 和 :limit2)使用 bindParam() 方法会导致错误。

解决方案:

解决方案在于禁用 PDO::ATTR_EMULATE_PREPARES 的默认 PDO 设置。此设置本质上指示 PDO 模拟准备好的语句,而不是在本机使用它们。

要禁用此设置:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
登录后复制

禁用此设置后,可以使用以下命令准备和执行查询参数数组,包括 LIMIT 值:

$stmt = $pdo->prepare($sql);
$stmt->execute(array(5)); //works!
登录后复制

含义:

禁用 PDO::ATTR_EMULATE_PREPARES 可以提高性能,因为它消除了模拟准备好的开销声明。但需要注意的是,由于性能原因,此设置默认启用。

其他资源:

  • [PDO MySQL:使用 PDO:: ATTR_EMULATE_PREPARES 是否?](https://pdosql.org/pdo-mysql-use-pdo-attr-emulate-prepares-or-not/)

以上是如何解决 PDO 中使用 LIMIT 子句传递数组参数时出现的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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