php在执行mysql存储过程后执行其他数据库操作问题解决方法

来源:互联网 发布:集团管控软件 编辑:程序博客网 时间:2024/06/05 11:22

问题描述:php在执行mysql存储过程后执行其他数据库操作时,报错Commands out of sync; you can't run this command now

产生原因:1、存储过程产生的结果集没有在php中获取;

  2、存储过程的结果集没有被释放掉或者没有释放完全;

  3、如果用mysql而非mysqli需要断开数据库再重新连接。

解决方法:1、使用mysqli驱动;

  2、mysqli_multi_query来遍历所有存储过程的结果集,并释放

具体实现:

//存储过程,插入tuser和tuser_props//解决存储过程后不能query问题,用mysqli_multi_query处理if (mysqli_multi_query($con,"call sp_reg('$udid','$loginName', '$loginPwd', '$userName','$userPic',''); ")) { do {if ($result = mysqli_store_result($con)) {while ($row = mysqli_fetch_row($result)) {$resultSign = $row[0];}mysqli_free_result($result);} } while (mysqli_next_result($con));}if($resultSign == '1'){$sql2 = "SELECT * FROM `tuser` WHERE username = '$loginName' ";$result2 = mysqli_query($con,$sql2);if(mysqli_num_rows($result2) > 0){$row = mysqli_fetch_array($result2);$json = array("sign"=>"1","userNo"=>$row["no"],"userName"=>$row["nickname"],"headicon"=>$row["headicon"]);$result2->close();mysqli_close($con);die(json_encode($json));}else{$json = array("sign"=>"0", "result"=>"Error0.".mysqli_error($con));mysqli_close($con);die(json_encode($json));}}else{$json = array("sign"=>"0", "result"=>"Error0.".mysqli_error($con));mysqli_close($con);die(json_encode($json));}


0 0
原创粉丝点击