php实现基于pdo的事务处理方法示例


Posted in PHP onJuly 21, 2017

本文实例讲述了php实现基于pdo的事务处理方法。分享给大家供大家参考,具体如下:

实例1:

try {} catch () {} 形式

<?php
$dsn = 'mysql:dbname=cheyun_cms;host=127.0.0.1';
$user = 'root';
$password = '111111';
//采用预处理+事务处理执行SQL操作
//1.连接数据库
try {
  $pdo = new PDO($dsn, $user, $password);
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
  die("数据库连接失败".$e->getMessage());
}
//2.执行数据操作
try{
  //开启事物,此时会关闭自动提交
  $pdo->beginTransaction();
  $sql = "insert into cy_log (logid, value, action, file) values (?, ?, ?, ?)";
  $stmt = $pdo->prepare($sql);
  //传入参数
  $stmt->execute(array(null,"test4","w",11));
  $stmt->execute(array(null,"test5","w",11));
  $stmt->execute(array(null,"test3","w",11));
  //提交事物,并且 数据库连接返回到自动提交模式
  $pdo->commit();
}catch(PDOException $e){
  echo '执行失败'.$e->getMessage();
  //如果数据库被设置成自动提交模式,rollback 在回滚事务之后将恢复自动提交模式。
  //包括 MySQL 在内的一些数据库, 当在一个事务内有类似删除或创建数据表等 DLL 语句时,会自动导致一个隐式地提交。
  //隐式地提交将无法回滚此事务范围内的任何更改。即 DDL 语句无法回滚
  $pdo->rollback();
}

实例2:

if…else…形式

<?php
$dsn = 'mysql:dbname=cheyun_cms;host=127.0.0.1';
$user = 'root';
$password = '111111';
//采用预处理+事务处理执行SQL操作
//1.连接数据库
try {
  $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
  die("数据库连接失败".$e->getMessage());
}
//2.执行数据操作
//开启事物
$pdo->beginTransaction();
$sql = "insert into cy_log (logid, value, action, file) values (?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$datalist = array(
  array(null,"test9","w",11),
  array(null,"test10","w",11),
  array(null,"test11","w",11)
);
//是否提交标志位
$isCommit = true;
foreach($datalist as $data){
  $stmt->execute($data);
  if($stmt->errorCode()>0){
    //回滚
    $pdo->rollback();
    $isCommit = false;
    break;
  }
}
if($isCommit){
  //提交事物
  $pdo->commit();
}

注意:

数据表需要 InnoDB 类型

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
无限级别菜单的实现
Oct 09 PHP
别人整理的服务器变量:$_SERVER
Oct 20 PHP
php strtotime 函数UNIX时间戳
Jan 14 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
smarty中js的调用方法示例
Oct 27 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP中phar包的使用教程
Jun 14 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
php基于自定义函数记录log日志方法
Jul 21 #PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 #PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 #PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 #PHP
php检测mysql表是否存在的方法小结
Jul 20 #PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 #PHP
php脚本守护进程原理与实现方法详解
Jul 20 #PHP
You might like
PHP可逆加密/解密函数分享
2012/09/25 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
php限制ip地址范围的方法
2015/03/31 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
python基础之入门必看操作
2017/07/26 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
酒店总经理工作职责
2013/12/13 职场文书
会计自荐信范文
2014/03/09 职场文书
领导班子四风表现材料
2014/08/23 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android