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后退一页表单内容保存实现方法
Jun 17 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
ThinkPHP模板Switch标签用法示例
Jun 30 PHP
简单谈谈favicon
Jun 10 PHP
php日期操作技巧小结
Jun 25 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
php组合排序简单实现方法
Oct 15 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 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 危险函数解释 分析
2009/04/22 PHP
zend framework多模块多布局配置
2011/02/26 PHP
php实现监听事件
2013/11/06 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
js简单抽奖代码
2015/01/16 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
JS验证不重复验证码
2017/02/10 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
Python自定义简单图轴简单实例
2018/01/08 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
财务管理专业推荐信
2013/11/19 职场文书
给交警的表扬信
2014/01/12 职场文书
金融保险专业求职信
2014/09/03 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
公积金接收函格式
2015/01/30 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
学校捐书倡议书
2015/04/27 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
使用springMVC所需要的pom配置
2021/09/15 Java/Android