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

问题描述: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值