ThinkPHP資料庫驅動之mysql事物回滾
阿新 • • 發佈:2018-12-26
很簡單的一個事物回滾,簡單介紹下事物回滾,示例怎麼使用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(); } }