很简单的一个事物回滚,简单介绍下事物回滚,示例怎么使用Thinkphp的回滚。下面上俩个由浅入深的例子。会给你帮助理解,和提升。
//具体的讲解请允许我把它放在了 http://www.ichasem.com/?p=331 这里
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回滚就会取消事物开启之后操作数据库的所有行为。

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

    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();
        }
    }