<?php
/*
PDO::ERRMODE_SILENT 默认模式,静默模式
PDO::ERRMODE_WARNING 警告模式
PDO::ERRMODE_EXCEPTION 异常模式
*/
/*
beginTransaction() 启动一个事务
commit() 提交一个事务
rollBack()回滚一个事务
inTransaction() 查看是否在事务内
*/
//事务处理
try{
header('Content-Type:text/html; charset=utf-8'); //网页utf8
$pdo = new PDO ('mysql:host=localhost;dbname=test', 'test', '123456'); //连接数据库
$pdo->query("set names utf8"); //数据库utf8
//错误处理模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//关闭自动提交
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
//开启事务
$pdo->beginTransaction();
$sql1 = "UPDATE userAccount SET money = money - 2000 WHERE username = 'boss'";
$sql2 = "UPDATE userAccount SET money = money + 2000 WHERE username = 'worker'";
$res1 = $pdo->exec($sql1);
if($res1 == 0){
throw new PDOException('boss转账失败');
}
$res2 = $pdo->exec($sql2);
if($res2 == 0){
throw new PDOException('worker接受失败');
}
//提交
$pdo->commit();
}catch(PDOException $e){
//回滚
$pdo->rollBack();
echo $e->getMessage();
}
?>
pdo错误处理模式与事务处理
最新推荐文章于 2021-03-28 22:38:36 发布