(原文转自:http://www.cnblogs.com/doll-net/archive/2009/04/29/commands-out-of-sync.html

在PHP同一事物里调用MYSQL的存储过程后再次执行另外的一个或多个命令(或者在同一事物里执行多个存储过程),如果使用mysqli的query方法获得结果,将获得一个错误:Commands out of sync; you can't run this command now sss  先给出代码:

存储过程:

有关“Commands out of sync; you can't run this command now”错误的解决办法(php)
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)CREATE PROCEDURE test1()
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)
begin
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)        
drop table if exists tb1;
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)    
create table tb1
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)    (
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)        val 
int not null
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)    )engine 
= innoDB;
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)    
insert into tb1(val) values(1),(2),(3);
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)    
select * from tb1;
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)
end
有关“Commands out of sync; you can't run this command now”错误的解决办法(php)

PHP代码:

?> 

执行上面的代码后就会出现上面的错误,消息说明MYSQL数据库认为是这一个错误的命令执行顺序。原因在于MYSQL的存储过程执行完成后除了返回实际结果集还会返回存储过程执行的转态

,而上面的代码仅处理了第一个结果集,第二个结果集并没有被释放掉。

When a stored procedure returns a resultset, MySQL returns at least two resultsets: first for the SELECT CALL inside the stored procedure. 2ndfor the call of the stored procedure itself

 (2nd usually is only an OK or ERR packet).

要解决这个问题,需要用mysqli的multi_query方法,遍历所有的结果集并释放掉掉。代码如下:

?>

相关文章:

  • 2021-06-30
  • 2021-07-18
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
猜你喜欢
  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
相关资源
相似解决方案