排除 MySQLi 的“命令不同步”错误
在获取所有数据之前执行后续查询时,会发生 MySQLi“命令不同步”错误上一个查询的行。要解决此问题,请确保在执行其他查询之前获取所有行。
错误原因:
当未从查询中获取行时,MySQL 客户端禁止执行新查询。正在进行的查询。这是为了维护数据完整性并防止多个结果集之间发生冲突。
可能的解决方案:
1.使用 mysqli_store_result() 或 mysqli_fetch_all() 预取行
使用 mysqli_store_result():
$result = mysqli_store_result($db);
使用mysqli_fetch_all():
$result = mysqli_query($db, $sql)->fetch_all();
2.对存储过程使用 mysqli_next_result()
如果执行存储过程,它可能会返回多个结果集。在这种情况下,请在执行其他查询之前使用 mysqli_next_result() 迭代并完成所有结果集。
while ($result = mysqli_next_result($db)) { // process the result set }
3.层次结构的替代数据存储
考虑以不同方式存储层次结构数据以简化查询。探索各种数据库模型,例如邻接表或嵌套集模型,以优化数据结构并提高查询效率。
补充说明:
对于 CodeIgnitor 用户,您可以由于 mysqli 驱动程序中的已知问题而遇到此错误。要解决此问题,请修改驱动程序的 _execute() 函数,如下所示:
protected function _execute($sql) { $results = $this->conn_id->query($this->_prep_query($sql)); @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error return $results; }
以上是如何修复 MySQLi 的'命令不同步”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!