您的位置:首页 > 编程语言 > PHP开发

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

2016-12-01 14:30 1031 查看
问题描述: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));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql
相关文章推荐