有一个这样的需求,查出数据表的数据,例如100条,我要根据这100条数据去循环,更新其他 a、b、c表,如果在循环的过程中其中一条错误了,那么这个时候我应该怎么去回滚,
foreach ($data as $v){
$sql = 'UPDATE `db` SET `field`='1' WHERE (`field_id`='1')';
$res = mysql_query($sql);
if(!$res){
如果有错,我在这里应该怎么让这个回滚到未更新之前?
}
}
求请教,感激不尽
-------------------------
foreach ($data as $v){
mysql_query('BEGIN');
$sql = 'UPDATE `db` SET `field`='1' WHERE (`field_id`='1')';
$res = mysql_query($sql,$con);
if(!$res){
// 如果有错,我在这里应该怎么让这个回滚到未更新之前?
mysql_query('ROLLBACK');
}
else{
mysql_query('COMMIT');
}
mysql_query('END')
}
这是原生的,如果您用 thinkphp,可以用startTrans、commit、rollback方法。 也可以用PDO的beginTransaction、rollback和commit。
您去了解一下。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。