比如注册,逻辑是首先插入数据到表a,然后根据返回结果来做一些判断,最后返回true或者false。现在的问题是,如果我在 做判断的时候发现错误了,那么表a的数据已经插入了,怎么办?能回滚吗?
ThinkPHP 的事务支持可以帮到你。
ThinkPHP - 事務支持
ThinkPHP提供了单数据库的事务支持。
举个例子:
$m=D('YourModel');//或者是M();
$m2=D('YouModel2');
$m->startTrans();//在第一个模型里启用就可以了,或者第二个也行
$result=$m->where('删除条件')->delete();
$result2=m2->where('删除条件')->delete();
if($result && $result2){
$m->commit();//成功则提交
}else{
$m->rollback();//不成功,则回滚
}
不是很明白你的意思 ,哪些判断不能在写入数据库前进行吗?
插入数据库的时候可以获取到插入的
ID
,然后根据你说的,判断失败拿刚刚插入的ID删除便是。至于你说的回滚,貌似从
代码层
回滚不了吧