文档章节

PHP PDO事务回滚

kongjun
 kongjun
发布于 2015/06/04 15:09
字数 220
阅读 73
收藏 1
点赞 0
评论 0
<?php
    try{
        $pdo=new pdo("mysql:host=localhost;dbname=xsphpdb", "root", "123456", 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;
    }
    /*
     * 事务处理
     *
     */
    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


© 著作权归作者所有

共有 人打赏支持
kongjun
粉丝 7
博文 97
码字总数 40140
作品 0
杭州
程序员
数据库抽象层 PDO

数据库抽象层 PDO 链接与链接管理 如果有任何连接错误,将抛出一个 异常对象。如果想处理错误状态,可以捕获异常,或者选择留给通过 设置的应用程序全局异常处理程序。 事务与自动提交 事务支...

liangwt
2016/08/28
8
0
PDO

PDO 一、什么是PDO PDO是PHP数据对象(PHP Data Object)的缩写 二、怎么查看php是否支持PDO 1. 使用phpinfo() 函数查看PDO是否支持 2. 如果没有开启PDO 请查看 wamp目录:(C:wampbinphpphp7.0....

方花
2017/11/21
0
0
PHP中实现MySQL嵌套事务的两种解决方案

一、问题起源 在MySQL的官方文档中有明确的说明不支持嵌套事务: [sql] view plaincopy Transactions cannot be nested. This is a consequence of the implicit commit performed for any c......

开元中国2015
2015/04/23
57
0
PDO 完全使用教程

一.PDO异常处理 PDO::ATTR_ERRMODE 1) PDO::ATTR_ERRMODE//不报错误(忽略)(0) 2) PDO::ERRMODE_WARNING //以警告的方式报错(1) 3) PDO::ERRMODE_EXCEPTION //以异常的方式报错(2) 二.PDO预处...

myzyq
2016/03/14
35
0
阅读杂记(RSA,PDO)

RSA算法 RSA Key Size Selection http://www.vocal.com/cryptography/rsa-key-size-selection/ 这篇文章说的是如何选择RSA密钥的长度。RSA密钥的长度是可以选择的,RSA密钥的长度影响加密后的...

王二狗子11
01/08
0
0
php中PDO处理mysql 基本操作

一 :php连接mysql 代码: <?php $servername = "127.0.0.1"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;dbname=mysql", $username,......

fjxichao
2015/01/14
0
2
PHP PDO函数内事务是自动rollBack?

PHP如果在函数内开始了一个事务,如果未提交或者回滚那么当退出这个函数时是否会回滚呢? beginTransaction();$db->exec($sql2);if (true) { }return $var;}...$db->beginTransaction();$db...

mark35
2011/08/18
575
2
PHP 对 mysql 的事务处理

mysql>mysql事务处理php代码实现事务的处理可以通过PHP预定义类mysqli的以下方法实现。 autocommit(boolean):该方法用于限定查询结果是否自动提交,如果该方法的参数为true则自动提交,如果...

罗春宗
2012/10/31
0
0
PHP 学习必备技能(基础略过)

1.面向对象编程 面向对象编程基本概念 类和对象的关系 如何定义类 成员属性(变量) 如何创建对象实例及如何访问对象属性 对象在内存中存在的形式 栈、堆、全局区、常量区和代码区的关系 成员方...

风雪中的舞者
2015/08/05
0
0
【求助】PHP+MySQL分布式事务(XA),不能回滚

query("SET autocommit=0;");$conn2->query("SET autocommit=0;");$conn1->query("XA START '$g

Hpyer
2016/05/11
337
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!

前言 Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它...

crossoverJie
12分钟前
2
0
OSChina 周一乱弹 —— 你的朋友圈有点生锈了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @Devoes :分享Trademark的单曲《Only Love (电视剧《妙手仁心 II》插曲)》: 《Only Love (电视剧《妙手仁心 II》插曲)》- Trademark 手机党少...

小小编辑
今天
310
9
【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
今天
1
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
2
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
2
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
1
0
AB 压力测试

Ubuntu 安装AB apapt-get install apache2-utils 使用AB 压力测试 -c 并发数 -n请求总数 ab -c 3000 -n 10000 http://localhost/test/index.php AB只能测试localhost 返回结果 This is Apac......

xiawet
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部