Erlo

ThinkPHP数据库驱动之mysql事物回滚

2019-10-16 11:31:09 发布   507 浏览  
页面报错/反馈
收藏 点赞

1、开启事务方法 startTrans()
2、事务提交方法 commit()
3、事务回滚方法 rollback()

用法例子:

$order = M(‘order’);
$allAdded = true; //先设定一个值为 true;
$data['name'] = 'winter';
$order->startTrans(); //开启事物
for($i = 1;$i<3;$i++){ 
    $sign = $order->add($data); //添加一条数据到order表
    if(!$sign){
        $order->rollback(); //如果order添加失败事物回滚
        $allAdded = false; //并且把allAdded设置为 false
    }
}
//回滚
if($allAdded){
    $order->commit(); 
    // 如果allAdded为真则两条数据都成功;那么 commit事物提交
    echo '添加成功';
}else{
    echo '添加失败';
}

如果commit了。那么就提交插入数据。如果发现alladded为假说明有条数据没插入正确。那么就rollback回滚就会取消事物开启之后操作数据库的所有行为。

提供一个例子助于大家加深理解

public function insertdata(){
    $model = M();
    $model->startTrans();
    $data['name'] = 'winter';
//增加一条用户信息
    $si = $model->table(C('DB_PREFIX').'user')->add($data);
    if(!$si){
        $model->rollback();
        exit();
    }
    $car['brand'] = $si;
//增加一条用户id
    $c = $model->table(C('DB_PREFIX').'car')->add($car);
    if($si && $c){
        $model->commit();
    }else{
        $model->rollback();
    }
}
复制代码

 

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认