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行()