PHP+;MySQL-事务不会回滚

PHP+;MySQL-事务不会回滚,php,mysql,sqltransaction,Php,Mysql,Sqltransaction,我正在使用老式的mysql\u query()函数来执行事务。即使事务中的一个查询失败,它也不会回滚。我已调试受影响的行,它们不是0就是1。语法如下: $cnx = mysql_connect( .. ); mysql_select_db("DB", $cnx); mysql_query("START TRANSACTION"); mysql_query("BEGIN"); $isrollback = -1; for (...) // run through query l

我正在使用老式的
mysql\u 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); 

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

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

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


MySQL提供了如何从

转换到您使用的数据库引擎的说明?如果其MyISAM则不支持事务
mysql\u受影响的\u行
=>
在成功时返回受影响的行数,如果上次查询失败,则返回-1
您不需要启动事务2次;)雷德雷鬼是真的。很抱歉,这真的没有显示出调试您自己的代码的努力-1我尝试了
if(mysql\u受影响的\u行()