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

mysql pdo 事务处理_php中pdo的mysql事务处理实例相关推荐

  1. MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程 [转]

    MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程 五月 15, 2012 by admin · 14 Comments 导读: 2012年5月12日,MySQL技术群-北京技术圈的MySQ ...

  2. 共享mysql数据库_局域网中搭建共享MySQL数据库

    局域网中搭建共享MySQL数据库比较适合学习阶段的同学,适合搭建平台进行测试,也方便共同管理数据库,但是还是有较大的弊端,本文的讲解方法只能在局域网中进行搭建. 一.配置单个电脑访问共享数据库 需要注 ...

  3. mysql敤 罚_php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В_PHP教程

    php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В PDO常用方法: PDO::query()主要用于有记录结果返回的操作(PDOStatement),特别是select操作. PDO::e ...

  4. mysql敤 罚_php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В

    php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В PDO常用方法: PDO::query()主要用于有记录结果返回的操作(PDOStatement),特别是select操作. PDO::e ...

  5. pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法

    当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_ ...

  6. mysql int 判断_PHP通过PDO查MySQL查询int字段返回string类型,解决方案

    虽说PHP是弱类型的语言,但不代表没类型,乱转也是个问题,因为要进行数据比较,判断,还要和其它语言数据交互.这个问题一定要解决的.但网上的标准答案似乎没提驱动问题,此文结合作者经验详细说明. 1.PD ...

  7. mysql php pdo 迭代器_php – 创建PDO迭代器

    这篇文章是一个骗局.它声称提供的技术可以加速PDO的数据库调用,但实际上它会大大减慢它们的速度. 它接地的前提也是错误的. PDOStatement已经可以遍历,你不需要使用foreach来迭代PDO ...

  8. ubuntu 环境下调试mysql源码_Linux中eclipse调试mysql源代码

    Linux中eclipse调试mysql源代码 系统:Redhat Linux 6.4 准备的包: eclipse-cpp-luna-SR1-linux-gtk-x86_64 .tar.gz cmak ...

  9. mysql 重装,Windows系统中完全卸载MySQL数据库实现重装mysql

    一.在控制面板,卸载MySQL的所有组件 控制面板-->所有控制面板项-->程序和功能,卸载所有和MySQL有关的程序 二.找到你的MysQL安装路径,看还有没有和MySQL有关的文件夹, ...

最新文章

  1. 中国AI开发者真实现状:写代码这条路,会走多久?
  2. cdoj916-方老师的分身 III 【拓扑排序】
  3. 我的C3P0的一些配置心得
  4. python 福利彩票_使用Python买福彩,5个数字,20选5,有没买过
  5. 快速问医生如何快速实现 患者与医生即时问诊?
  6. 第一次Sprint总结
  7. angularjs 路由 异步加载js
  8. android --多线程下载
  9. centos6.5解决方案-1
  10. 铺铜规则在哪设定_干货丨PCB layout结合生产设计必须遵循这六大规则!
  11. setup factory 安装前静默卸载
  12. html动态和静态的区别,静态测试和动态测试的区别是什么
  13. 【学习强化学习】三、Q learning和Sarsa算法
  14. vector vector int的使用
  15. MATLAB双目标定步骤
  16. 如何去除word中的空行
  17. 多张照片怎么添加时间水印
  18. python byte转str,str转byte
  19. 花呗能不能不还?支付宝说春节集五福中彩蛋可帮还
  20. ViewDragHelper实战,实现滑动解锁

热门文章

  1. linux kill命令信号,Linux kill 命令详解
  2. 简单的深度优先遍历和广度优先遍历
  3. java join 异常_Java:守护进程:thread.join()没有完成,当在一个线程中抛出异常时...
  4. 自学python前戏
  5. 2017.10.25水题大作战题解
  6. BJFU 质数相关
  7. Swift泛型Protocol对比C#泛型Interface
  8. VS2017动态链接库(.dll)的生成与使用
  9. select + 线程池 回应服务器(windows)
  10. 《Linux内核完全注释》《完全剖析》 » 阅读本书所需的基础知识 -- 再次强调。