true));
// 设置长连接
// 设置自动提交关闭
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);//设置事务为手动提交,也即把隐式事务改为显示事务,参与事务的部分为开启事务到提交/回滚之间的语句
// 设置错误信息显示的异常类模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo $e->getMessage();
die;
}
try{
// 手动控制事务
$pdo->beginTransaction();
// 张三转账200出去
// 李四收账200
// 如果不成功回滚操作
$sql1="update admin set money=money-200 where id=1";
$sql2="update admin set money=money+200 where id=22";
$res1=$pdo->exec($sql1);
$res2=$pdo->exec($sql2);
if (!$res1) {
// 抛出异常
throw new PDOException('张三转账失败');
die;
}
if (!$res2) {
// 抛出异常
throw new PDOException('李四收账失败');
die;
}
// 转账成功
if($res1 && $res2){
echo "转账成功";
$pdo->commit();
}
}catch(PDOException $e){
$pdo->rollBack();
echo $e->getMessage();
}
// 把自动提交开启
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
?>
pdo预处理事务(学习)
最新推荐文章于 2021-03-10 07:37:23 发布