[英]Trouble using MySQL transactions with loops in PHP
我试图建立一个MySQL事务,以便我可以遍历一堆查询(见下文),如果其中任何一个失败,则回滚所有更改。 但是,我发现如果失败,则不会回滚所有查询。 我在这里做错什么吗?
mysql_query("START TRANSACTION");
foreach($array1 as $arr){
// loop SQL query
if(mysql_error()){
$failed = "...";
}
}
foreach($array2 as $arr){
// loop SQL query
if(mysql_error()){
$failed = "...";
}
}
if(isset($failed)){
mysql_query("ROLLBACK");
} else {
mysql_query("COMMIT");
}
谢谢!
原因是如果查询失败(由于错误),事务将自动回滚并终止。 因此,如果查询失败,您应该停止循环,因为在查询失败后执行的所有操作都会自动提交(或者如果AUTOCOMMIT
关闭,则至少在另一个事务中)...
您使用的是交易安全表类型吗? 默认的MyISAM不支持事务,我建议使用InnoDB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.