您的位置:首页 > 数据库 > MySQL

PDO事务处理

2017-09-06 09:52 127 查看
<?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', 'root', 'root'); //连接数据库
$pdo->query("set names utf8"); //数据库utf8

//错误处理模式-异常模式 上面有解释
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//关闭自动提交
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);

//开启事务
$pdo->beginTransaction();
 $sql1 = "UPDATE user_ord SET money = money - 2000 WHERE username = 'boss'";
$sql2 = "UPDATE user_ord 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();
}
?>



如果try执行成功的话,就会提交事务,如果两个sql有其中一个失败就会回滚
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息