0
我使用舊式mysql_query()
函數來執行事務。即使事務中的某個查詢失敗,它也不會回滾。我已經調試受影響的行,他們是0或1,語法如下:PHP + MySQL - 事務不回滾
$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);
您使用的是哪種數據庫引擎?如果它的MyISAM不支持事務 – Anigel
'mysql_affected_rows' =>'成功返回受影響的行數,如果最後一次查詢失敗,則返回-1# – bitWorking
您不需要啓動事務2次;) –