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 相关文章推荐
php 获取客户端的真实ip
Nov 30 PHP
php知道与问问的采集插件代码
Oct 12 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
php实现的CSS更新类实例
Sep 22 PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 PHP
浅谈PHP中的
Apr 23 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 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安装攻略:常见问题解答(三)
2006/10/09 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
会计专业应届生求职信
2013/11/24 职场文书
公司年会晚宴演讲稿
2014/01/06 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
妈妈活动方案
2014/08/15 职场文书
最新离婚协议书范本
2014/08/19 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
Django如何创作一个简单的最小程序
2021/05/12 Python