0

我正在使用旧式mysql_query()函数来执行事务。即使事务中的一个查询失败,它也不会回滚。我已经调试了受影响的行,它们是 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); 
4

1 回答 1

1

您需要使用事务数据库引擎。例如 INNODB

您当前正在使用不支持事务的 MyISAM。

这意味着您无法在不更改数据库引擎的情况下启动或回滚事务。

MySQL 给出了如何从MyISAM 转换为 INNODB的说明

于 2013-07-26T09:20:39.533 回答