首页 >后端开发 >php教程 >为什么在检索分层数据时,MySQLi 中会出现'命令不同步”错误?

为什么在检索分层数据时,MySQLi 中会出现'命令不同步”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-06 09:31:121022浏览

Why Am I Getting a

层次结构检索期间 MySQLi 命令不同步错误

尝试执行多个 MySQLi 时可能会遇到“命令不同步”错误查询,尤其是在检索分层数据期间。本文深入研究了该问题,解释了其原因并提供了潜在的解决方案。

根本原因

MySQL 客户端限制新查询的执行,同时未从查询中获取行。正在进行的查询。此错误源于客户端协议,确保在继续新查询之前按顺序检索所有行。

可能的解决方案

要解决此问题,可以使用多种选项:

1。使用 mysqli_store_result()

此方法将外部查询中的所有行预取到客户端缓冲区中。 MySQL服务器确认完整检索结果,允许自由执行后续查询。

2.使用 mysqli_result::fetch_all()

与 mysqli_store_result() 类似,此方法以 PHP 数组的形式检索整个结果集,从而实现高效的循环和数据获取。

3.对存储过程使用 mysqli_multi_query()

存储过程有可能返回多个结果集,每个结果集包含自己的行。应该使用 mysqli_multi_query() 迭代这些结果集,按顺序处理它们并遵守 MySQL 协议。

替代数据存储

避免嵌套的缺点在分层数据检索中进行查询时,请考虑重组数据以实现更直接的查询。邻接列表或嵌套集等技术可以显着简化层次结构。

CodeIgnitor 3.0.3 的自定义黑客

对于 CodeIgnitor 3.0.3 的用户,解决方法包括修改行262 的 mysqli_driver.php 文件。通过将 @mysqli_next_result() 添加到 _execute() 方法,可以缓解“命令不同步”错误。

以上是为什么在检索分层数据时,MySQLi 中会出现'命令不同步”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn