第二次调用存储过程会出错(2014)

时间:2012-10-15 20:28:19

标签: mysql stored-procedures mysqli

我存储过程的第一天。 当我第二次调用该程序时出现错误?

它似乎与我获取结果的方式有关,我必须释放结果? 我尝试了不同的方法,但我不能没有错误:(

$t = 27;
$res = $mysqli->query("CALL ts_open_uitdagingen('".$t."')");
$aRes = $res->fetch_assoc();
echo '<br />'.$aRes['open_uitdagingen'].'<br />';
echo'<hr />';

$t = 80;
$res = $mysqli->query("CALL ts_open_uitdagingen('".$t."')");
echo "<br />CALL failed?: (" . $mysqli->errno . ") " . $mysqli->error;
$aRes = $res->fetch_assoc();
echo 'bBr />'.$aRes['open_uitdagingen'].'<br />';
echo'<hr />';

显示器:

1

CALL失败?:( 2014)命令不同步;您现在无法运行此命令致命错误:在第14行的/home/xxxxxxxxxx.nl/public_html/content/speler_uitdagen.php中的非对象上调用成员函数fetch_assoc()

1 个答案:

答案 0 :(得分:2)

我承认我从未以这种方式使用mysqli,但是从this comment开始,您似乎需要使用 $res->close()$mysqli->next_result()在再次呼叫SP之前:

$t = 27;
$res = $mysqli->query("CALL ts_open_uitdagingen('".$t."')");
$aRes = $res->fetch_assoc();
echo '<br />'.$aRes['open_uitdagingen'].'<br />';
echo'<hr />';
$res->close();
$mysqli->next_result();

...