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 相关文章推荐
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
php Http_Template_IT类库进行模板替换
Mar 19 PHP
php adodb操作mysql数据库
Mar 19 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
php木马webshell扫描器代码
Jan 25 PHP
APACHE的AcceptPathInfo指令使用介绍
Jan 18 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
Yii框架登录流程分析
Dec 03 PHP
Yii分页用法实例详解
Dec 04 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
Jun 24 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
php文件类型MIME对照表(比较全)
Oct 07 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
php5 mysql分页实例代码
2008/04/10 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
Javascript----文件操作
2007/01/18 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
用Python编写web API的教程
2015/04/30 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
Python处理中文标点符号大集合
2018/05/14 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Python中整数的缓存机制讲解
2019/02/16 Python
python对常见数据类型的遍历解析
2019/08/27 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
浪漫婚礼主持词
2014/03/14 职场文书
导游个人求职信范文
2014/03/23 职场文书
2014年医院工作总结
2014/11/20 职场文书
刘公岛导游词
2015/02/05 职场文书
学生会辞职信
2015/03/02 职场文书
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android