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 相关文章推荐
PHP脚本的10个技巧(6)
Oct 09 PHP
建站常用13种PHP开源CMS比较
Aug 23 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
Feb 21 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
php实例分享之二维数组排序
May 15 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
ThinkPHP表单令牌错误的相关解决方法分析
May 20 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
PHP dirname功能及原理实例解析
Oct 28 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
Oracle 常见问题解答
2006/10/09 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
浅析PHP绘图技术
2013/07/03 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
python学生管理系统
2019/01/30 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
最新大学职业规划书范文
2013/12/30 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
业务员岗位职责范本
2015/04/03 职场文书
记者节感言
2015/08/03 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers