存储过程导致下一个查询"命令不同步"

DMi*_*Min 7 php mysql stored-procedures

我正在使用mysql存储过程运行查询:

$AddProf_qr = mysql_query("call AddStudent('$d_Pass', '$d_Titl', '$d_Firs', '$d_Midd',  '$d_Last', '$d_Addr', '$d_City', '$d_Stat', '$d_County',  '$d_Zipc', $d_Gend, '$d_Birh', '$d_Phom', '$d_Phoh', '$d_Phoo', '$d_Email', '$d_Webs', '$d_Natn', '$d_Profsn',  '$d_Compny', '$d_Desig', $d_ProfAcc)", $this->c_remote) or die ("first call" . mysql_error($this->c_remote));
Run Code Online (Sandbox Code Playgroud)

我应该从电话中得到一个结果:@@ IDENTITY =一个数字;

$AP_result = mysql_fetch_array($AddProf_qr);
$CurrentSID = $AP_result['@@IDENTITY'];
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.但是当我在此之后运行另一个mysql更新查询时,它会出错:

错误:2014(CR_COMMANDS_OUT_OF_SYNC)消息:命令不同步; 你现在不能运行这个命令

我试过插入:

mysql_free_result($AddProf_qr);
Run Code Online (Sandbox Code Playgroud)

但仍然是一样的.

MySQL调用执行正常,脚本的其余部分运行没有问题,上面已被注释掉.但它们不会同时运行.我最好的猜测是,这个电话正在做一些弄乱这个问题的事情.

hob*_*ave 8

您的存储过程返回多个结果集.看这篇文章

解?

  • 使用mysqli_multi_query
  • 停止使用古老的mysql库 - mysqli中的i代表"改进" - 有充分的理由.