php下pdo的mysql事务处理用法实例


Posted in PHP onDecember 27, 2014

本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下:

php+mysql事务处理的几个步骤:

1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交

注意:mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持,下面是实例代码:

<?php 

    try{ 

        $pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//最后是关闭自动提交 

        //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//这个是通过设置属性方法进行关闭自动提交和上面的功能一样 

        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);//开启异常处理 

    }catch(PDOException $e){ 

        echo "数据库连接失败:".$e->getMessage(); 

        exit;

    } 

    /* 

     * 事务处理 

     * 

     *   张三从李四那里买了一台 2000 元的电脑 

     *     从张三帐号中扣出 2000元 

     *     向李四账号中加入 2000元 

     *     从商品表中减少一台电脑 

     *     MyIsAM  InnoDB 

     */ 

    try{ 

        $pdo->beginTransaction();//开启事务处理        

        $price=500; 

        $sql="update zhanghao set price=price-{$price} where id=1"; 

        $affected_rows=$pdo->exec($sql); 

        if(!$affected_rows) 

            throw new PDOException("张三转出失败");//那个错误抛出异常 

        $sql="update zhanghao set price=price+{$price} where id=3"; 

        $affected_rows=$pdo->exec($sql);       

        if(!$affected_rows) 

            throw new PDOException("向李四转入失败"); 

        echo "交易成功!"; 

        $pdo->commit();//交易成功就提交 

    }catch(PDOException $e){ 

        echo $e->getMessage(); 

        $pdo->rollback(); 

    }   

    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//自动提交,如果最后不自动提交,转账是不成功的   

    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING 

?>

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

PHP 相关文章推荐
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
PHP中ADODB类详解
Mar 25 PHP
PHP的autoload自动加载机制使用说明
Dec 28 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 #PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 #PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 #PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 #PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 #PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 #PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 #PHP
You might like
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
jquery ajax执行后台方法
2010/03/18 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
js数组的操作详解
2013/03/27 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
销售人员自我评价
2014/02/01 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
被告答辩状范文
2015/05/22 职场文书
2016年元旦主持词
2015/07/06 职场文书
企业培训简报范文
2015/07/20 职场文书
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle