ThinkPHP实现事务回滚示例代码(附加:PDO的事务处理)

时间:2023-03-10 05:59:24
ThinkPHP实现事务回滚示例代码(附加:PDO的事务处理)

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();//不成功,则回滚
}

PDO的事务回滚处理:

$servername="localhost";
$username="root";
$password="admin";
$dbname="test";
try{
$conn=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//开始事务
$conn->beginTransaction();
$conn->exec("INSERT INTO `hello`(`firstname`,`lastname`,`email`)VALUES('YE','XIAMING','yexianming@163.com')");
$conn->exec("INSERT INTO `hello`(`firstname`,`lastname`,`email`)VALUES('YE','CONG','yecong@163.com')");
$conn->exec("INSERT INTO `hello`(`firstname`,`lastname`,`email`)VALUES('FANG','MENG','fangmeng@168.com')");
//提交事务
$conn->commit();
echo "New records created successfully!";
}catch(PDOException $e){
//回滚事务
$conn->rollBack();
echo $sql."<br>".$e->getMessage();
}
$conn=NULL;