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有其中一个失败就会回滚
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql-connector-java 6.x 切换 注意事项
- CentOS 7 两步安装启动Mysql(mariadb)
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 解决mysql 开启logbin 导致存储过程报错
- MySQL 备份和恢复策略
- centos7 mysql数据库安装和配置
- mac下安装mysql(转载)