mysql pdo 事务处理_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
mysql pdo 事务处理_php中pdo的mysql事务处理实例相关推荐
- MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程 [转]
MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程 五月 15, 2012 by admin · 14 Comments 导读: 2012年5月12日,MySQL技术群-北京技术圈的MySQ ...
- 共享mysql数据库_局域网中搭建共享MySQL数据库
局域网中搭建共享MySQL数据库比较适合学习阶段的同学,适合搭建平台进行测试,也方便共同管理数据库,但是还是有较大的弊端,本文的讲解方法只能在局域网中进行搭建. 一.配置单个电脑访问共享数据库 需要注 ...
- mysql敤 罚_php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В_PHP教程
php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В PDO常用方法: PDO::query()主要用于有记录结果返回的操作(PDOStatement),特别是select操作. PDO::e ...
- mysql敤 罚_php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В
php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В PDO常用方法: PDO::query()主要用于有记录结果返回的操作(PDOStatement),特别是select操作. PDO::e ...
- pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法
当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_ ...
- mysql int 判断_PHP通过PDO查MySQL查询int字段返回string类型,解决方案
虽说PHP是弱类型的语言,但不代表没类型,乱转也是个问题,因为要进行数据比较,判断,还要和其它语言数据交互.这个问题一定要解决的.但网上的标准答案似乎没提驱动问题,此文结合作者经验详细说明. 1.PD ...
- mysql php pdo 迭代器_php – 创建PDO迭代器
这篇文章是一个骗局.它声称提供的技术可以加速PDO的数据库调用,但实际上它会大大减慢它们的速度. 它接地的前提也是错误的. PDOStatement已经可以遍历,你不需要使用foreach来迭代PDO ...
- ubuntu 环境下调试mysql源码_Linux中eclipse调试mysql源代码
Linux中eclipse调试mysql源代码 系统:Redhat Linux 6.4 准备的包: eclipse-cpp-luna-SR1-linux-gtk-x86_64 .tar.gz cmak ...
- mysql 重装,Windows系统中完全卸载MySQL数据库实现重装mysql
一.在控制面板,卸载MySQL的所有组件 控制面板-->所有控制面板项-->程序和功能,卸载所有和MySQL有关的程序 二.找到你的MysQL安装路径,看还有没有和MySQL有关的文件夹, ...
最新文章
- 中国AI开发者真实现状:写代码这条路,会走多久?
- cdoj916-方老师的分身 III 【拓扑排序】
- 我的C3P0的一些配置心得
- python 福利彩票_使用Python买福彩,5个数字,20选5,有没买过
- 快速问医生如何快速实现 患者与医生即时问诊?
- 第一次Sprint总结
- angularjs 路由 异步加载js
- android --多线程下载
- centos6.5解决方案-1
- 铺铜规则在哪设定_干货丨PCB layout结合生产设计必须遵循这六大规则!
- setup factory 安装前静默卸载
- html动态和静态的区别,静态测试和动态测试的区别是什么
- 【学习强化学习】三、Q learning和Sarsa算法
- vector vector int的使用
- MATLAB双目标定步骤
- 如何去除word中的空行
- 多张照片怎么添加时间水印
- python byte转str,str转byte
- 花呗能不能不还?支付宝说春节集五福中彩蛋可帮还
- ViewDragHelper实战,实现滑动解锁
热门文章
- linux kill命令信号,Linux kill 命令详解
- 简单的深度优先遍历和广度优先遍历
- java join 异常_Java:守护进程:thread.join()没有完成,当在一个线程中抛出异常时...
- 自学python前戏
- 2017.10.25水题大作战题解
- BJFU 质数相关
- Swift泛型Protocol对比C#泛型Interface
- VS2017动态链接库(.dll)的生成与使用
- select + 线程池 回应服务器(windows)
- 《Linux内核完全注释》《完全剖析》 » 阅读本书所需的基础知识 -- 再次强调。