我使用旧式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);
答案 0 :(得分:1)
您需要使用事务数据库引擎。例如INNODB
您目前正在使用不支持交易的MyISAM。
这意味着您无法在不更改数据库引擎的情况下启动或回滚事务。
MySQL提供了有关如何从MyISAM to INNODB
转换的说明