古いスタイルのmysql_query()
関数を使用してトランザクションを実行しています。トランザクション内のクエリの 1 つが失敗しても、ロールバックしていません。影響を受ける行をデバッグしましたが、それらは 0 または 1 です。構文は次のとおりです。
$cnx = mysql_connect( .. );
mysql_select_db("DB", $cnx);
mysql_query("START TRANSACTION");
mysql_query("BEGIN");
$isrollback = -1;
for (...) // run through query list
{
mysql_query(".... query_i ....");
if(mysql_affected_rows() == 0)
{
$isrollback = 1
}
}
// more queries
if ($isrollback > 0)
mysql_query("ROLLBACK");
else
mysql_query("COMMIT);