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 相关文章推荐
elgg 获取文件图标地址的方法
Mar 20 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
Jun 10 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
PHP中常见的密码处理方式和建议总结
Oct 14 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
php教程之phpize使用方法
2014/02/12 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
19个Android常用工具类汇总
2014/12/30 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
基于jQuery的自动完成插件
2011/02/03 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
javascript的BOM
2016/05/03 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
学习python (2)
2006/10/31 Python
python编写的最短路径算法
2015/03/25 Python
python实现自动重启本程序的方法
2015/07/09 Python
Python 3中的yield from语法详解
2017/01/18 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
Python3进制之间的转换代码实例
2019/08/24 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
应届医学毕业生求职信分享
2013/12/02 职场文书
简短大学毕业感言
2014/01/18 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
高中班长竞选稿
2015/11/20 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL