0
我有一些正在運行的php/mysql,現在我正在遷移到存儲過程。遷移到存儲過程時出現MySQL「命令不同步」
只要調用任何存儲過程,後續的CALL和SELECT就會失敗,並顯示「命令不同步;現在無法運行此命令」。
非SELECT的現有存儲過程正常工作。
function db_all ($query)
{
log_sql_read ($query);
$result = mysql_query ($query, db_connection());
if (!$result)
{
log_sql_error ($query);
return Array();
}
$rows = Array();
while ($row = mysql_fetch_assoc ($result))
array_push ($rows, $row);
mysql_free_result ($result);
return $rows;
}
db_all ("SELECT 1 as `test`");
db_all ("SELECT 2 as `test`");
db_all ("CALL `$db`.`select_info`($id);"); // RETURNS CORRECT DATA
db_all ("CALL `$db`.`select_info`($id);"); // ERROR HERE
db_all ("SELECT 5 as `test`"); // ERROR HERE
此錯誤是其他地方所解釋不調用mysql_free_result
的結果,但我做調用此。那麼,怎麼了?
我看到一些引用mysqli的解決方案。現在我需要一個非mysqli的解決方案。
請您發佈存儲過程。看起來你在那裏做錯了什麼。 – grahamj42 2013-03-16 18:48:38
這有點複雜,但問題仍然存在於微不足道的存儲過程中。 – spraff 2013-03-16 19:22:31
@spraff問題是SP返回兩個結果集,並且在進行另一次調用之前需要使用它們。查看更新的答案。 – peterm 2013-03-16 19:27:36