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
php a simple smtp class
Nov 26 PHP
php 缓存函数代码
Aug 27 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
Dec 25 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 PHP
imagettftext() 失效,不起作用
Mar 09 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
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
Python中的高级函数map/reduce使用实例
2015/04/13 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
解决python运行启动报错问题
2020/06/01 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
办理护照介绍信
2014/01/16 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
武侯祠导游词
2015/02/04 职场文书
2019银行竞聘书
2019/06/21 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
使用Ajax实现进度条的绘制
2022/04/07 Javascript
nginx搭建NFS网络文件系统
2022/04/14 Servers
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python