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次;) –