层次结构检索期间 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中文网其他相关文章!