私は現在、ストアドプロシージャに移行している作業中の php/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 以外のソリューションが必要です。