当尝试同时执行 MySQL 查询时,您可能会遇到“命令不同步”错误。当 MySQL 客户端在尝试执行新查询时检测到仍有行需要从正在进行的查询中获取时,就会发生这种情况。
MySQL 客户端要求所有行在启动新查询之前从查询中获取。这可以防止数据损坏并确保客户端的状态与服务器的状态保持同步。
1.预获取结果
您可以使用 mysqli_store_result() 从外部查询中检索所有行。这会指示 MySQL 客户端缓冲结果,使您能够不受干扰地执行后续查询。
2.获取所有结果
或者,您可以使用 mysqli_result::fetch_all(),它将完整结果集作为 PHP 数组返回。这使您能够迭代数组,而无需执行任何进一步的查询。
存储过程可以返回多个结果集,每个结果集都有自己的行。为了处理这种情况,您应该使用 mysqli_multi_query()。此方法启动存储过程并循环遍历其结果集,直到不再使用 mysqli_next_result()。
在平面表中表示分层数据的情况下,考虑使用不同的数据建模方法来简化查询。
对于使用 CodeIgnitor 3.0.3 并遇到此错误的个人,mysqli_driver.php 文件中存在解决方法。具体来说,在第262行,修改_execute()方法如下:
以上是为什么我的 MySQLi 代码会生成'命令不同步”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!