使用 MySQLi 时出现“命令不同步”
问题:
An尝试同时执行多个 MySQLi 查询会触发“命令不同步”错误。嵌套查询检索分层数据。
原因:
当正在进行的查询中的行保持未获取状态时,MySQL 不允许执行新查询。
解决方案:
选项1:使用mysqli_store_result()
$result = mysqli_store_result($db); // Execute subsequent queries
这会缓冲MySQL客户端中的行,允许执行多个查询。
选项2:使用mysqli_result::fetch_all()
$result = mysqli_query($db, $sql); $data = mysqli_fetch_all($result, MYSQLI_ASSOC); // Execute subsequent queries
这将返回整个结果集作为数组,允许执行多个查询。
注意事项:
嵌套查询表示分层数据存储。考虑替代数据模型或使用 CodeIgnitor 等框架来使用 mysqli_next_result() 处理来自存储过程的多个结果集。
CodeIgnitor 实现:
// Edit code in system/database/drivers/mysqli/mysqli_driver.php 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中文网其他相关文章!