PHP中PDO的事务处理分析


Posted in PHP onApril 07, 2016

本文实例分析了PHP中PDO的事务处理。分享给大家供大家参考,具体如下:

事务处理具有四个特性:原子性、一致性、独立性、持久性。

并不是所有的数据库都支持事务处理的,PDO 为能够执行事务处理的数据库提供事务支持。

配置事务处理需注意:

1、关闭 PDO 的自动提交;

$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, false);

2、开启一个事务需要的方法;

$pdo->beginTransaction(); // 开启一个事务
$pdo->commit(); // 提交事务
$pdo->rollback(); // 回滚事务

3、一般事务处理是运行在 try...catch...语句中,当事务失败时执行 catch 代码段。

<?php
try {
  $pdo->beginTransaction(); // 开启一个事务
  $row = null;
  $row = $pdo->exec("xxx"); // 执行第一个 SQL
  if (!$row)
    throw new PDOException('提示信息或执行动作'); // 如出现异常提示信息或执行动作
  $row = $pdo->exec("xxx"); // 执行第二个 SQL
  if (!$row)
    throw new PDOException('提示信息或执行动作');
  $pdo->commit();
} catch (PDOException $e) {
  $pdo->rollback(); // 执行失败,事务回滚
  exit($e->getMessage());
}
?>

在事务中的 SQL 语句,如果出现错误,那么所有的 SQL 都不执行。当所有 SQL 有无误的时候,才提交执行。

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

PHP 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
thinkphp循环结构用法实例
Nov 24 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
php实现的验证码文件类实例
Jun 18 PHP
curl和libcurl的区别简介
Jul 01 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 #PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 #PHP
PHP的PDO常用类库实例分析
Apr 07 #PHP
PHP安全下载文件的方法
Apr 07 #PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 #PHP
PHP使用token防止表单重复提交的方法
Apr 07 #PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 #PHP
You might like
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
php 归并排序 数组交集
2011/05/10 PHP
PHP反射机制用法实例
2014/08/28 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
python实现决策树分类(2)
2018/08/30 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
Python grpc超时机制代码示例
2020/09/14 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
实习生自我鉴定
2013/12/12 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
政风行风整改报告
2014/11/06 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
房屋维修申请报告
2015/05/18 职场文书
让世界充满爱观后感
2015/06/10 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL