栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

mysqli为什么会给出“命令不同步”错误?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysqli为什么会给出“命令不同步”错误?

MySQL客户端不允许您执行新的查询,在该查询中仍需要从正在进行的查询中获取行。有关常见错误,请参见MySQL文档中的命令不同步。

您可以用来

mysqli_store_result()
从外部查询中预提取所有行。这会将它们缓冲在MySQL客户端中,因此从服务器的角度来看,您的应用已获取了完整的结果集。然后,即使在从现在缓冲的外部结果集中提取行的循环中,您也可以执行更多查询。

或者,您

mysqli_result::fetch_all()
将完整的结果集作为PHP数组返回,然后可以在该数组上循环。

调用存储过程是一种特殊情况,因为存储过程有可能返回多个结果集,每个结果集可能都有自己的行集。这就是为什么@
a1ex07的答案提到使用

mysqli_multi_query()
和循环直到
mysqli_next_result()
没有更多结果集。即使您的存储过程只有一个结果集,这也必须满足MySQL协议。


PS:顺便说一句,我看到您正在执行嵌套查询,因为您有代表层次结构的数据。您可能要考虑以不同的方式存储数据,以便可以更轻松地查询它。我做了一个名为“
SQL和PHP的分层数据模型”的演讲。我还在《SQL反模式:避免数据库编程的陷阱》一章中介绍了该主题。


这是

mysqli_next_result()
在CodeIgnitor 3.0.3中实现的方法:

system/database/drivers/mysqli/mysqli_driver.php
变化的第262行

protected function _execute($sql){    return $this->conn_id->query($this->_prep_query($sql));}

对此

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;}

从2.x开始,这一直是一个问题。我刚刚更新到3.x,并且不得不将此破解复制到新版本中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416261.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号