PDO中构建事务处理的应用程序
<meta http-equiv="Content-Type" content="text/html";charse="utf-8" />
<?php /* 将一系列的更新操作放到beginTransaction()和commit()函数中调用,并通过try块执行,就可以保证在更改之前完成,其他人无法看到 */
$dsn = 'mysql:dbname=test;host=localhost';
$username = 'root';
$password = '';
$opt = array(PDO::ATTR_PERSISTENT => true); //持续连接数据库
try{
$dbh = new PDO($dsn,$username,$password,$opt);
}catch(PDOException $e){
echo '数据库连接失败'.$e -> getMessage();
} $dbh -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置PDO异常处理模式
$dbh -> setAttribute(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交 try{
$price = 80;
$dbh -> beginTransaction();//开始事备 $affected_row = $dbh -> exec("update account set cash = cash-{$price} where name='userA'");
if($affected_row > 0){
echo "userA成功转出{$price}元人民币<br>";
}else{
throw new PDOException('usrA转出失败');
} $affected_row = $dbh -> exec("update account set cash = cash + {$price} where name='userB'");
if($affected_row > 0){
echo "userB成功转入{$price}元人民币<br>";
}else{
throw new PDOException('usrB转入成功');
} echo '交易成功';
$dbh -> commit();//如果执行到此处说明两次语句执行成功,整个事务成功 }catch(PDOException $e){
echo "交易失败".$e -> getMessage();
$dbh -> rollback();//如果事务执行失败,回滚事务
} $dbh -> setAttribute(PDO::ATTR_AUTOCOMMIT,1);//重新打开自动提交
PDO中构建事务处理的应用程序的更多相关文章
- PDO中的事务处理
基本原理和步骤其实都是一样的(可参看上一篇“MySQL的事务处理”),PDO中的事务处理就是调用PDO对象的三个方法: 开启事务:beginTransaction 回滚操作:rollBack 执行操作 ...
- .NET 7 SDK 开始 支持构建容器化应用程序
微软于 8 月 25 日在.NET官方博客上,.NET 7 SDK 将包括对创建容器化应用程序的支持,作为构建发布过程的一部分,从而绕过需要.显式 Docker 构建阶段. 这一决定背后的基本认知是简 ...
- C#中构建多线程应用程序[转]
原文:http://blog.sina.com.cn/s/blog_4e61c4290100ndyl.html C#中构建多线程应用程序[转] (2011-01-04 21:29:29) 转载▼ 标签 ...
- (转)HelloWorld CMake CMake中构建静态库与动态库及其使用
继续完善Hello World,建立它的共享库, 包括静态库和动态库. 本节的任务: 1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc 向终端输出Hello ...
- 在Flex中定义移动设备应用程序和启动屏幕
创建移动设备应用程序容器 移动设备应用程序中的第一个标签通常是以下标签之一: <s:ViewNavigatorApplication> 标签用于定义只有一个部分的移动设备应用程序. < ...
- 在ASP.NET Core中构建路由的5种方法
原文链接 :https://stormpath.com/blog/routing-in-asp-net-core 在ASP.NET Core中构建路由的5种方法 原文链接 :https://storm ...
- 甘果移动老甘:移动互联网变迁中的App和小程序
2018 年 10 月13 日,由又拍云和知晓云联合主办的 Open Talk 丨2018 小程序开发者沙龙系列活动广州站拉开帷幕,甘果移动的 CEO 路文杰(老甘)在沙龙上做了<移动互联网变迁 ...
- 用Spring构建企业Java应用程序的方法
https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247484965&idx=1&sn=ca6b847c65e506 ...
- 使用Maven插件构建Spring Boot应用程序镜像
使用Maven插件构建Spring Boot应用程序的Docker镜像. 环境准备 1.Linux系统 2.安装JDK,Maven 3.安装Docker 应用实践 1.在应用程序根目录下添加Docke ...
随机推荐
- linux vsftpd 服务配置
vsftpd.conf配置如下: # Example config file /etc/vsftpd/vsftpd.conf # # The default compiled in settings ...
- .net Core 2.1 MVC+EF+Redis搭建
官方学习资料 搭建空MVC框架 1.创建一个空模板 2.创建文件夹 Controllers.Models.Views 3.在Controllers文件夹下创建HomeController.cs 选择C ...
- mysql调优参考笔记
之前一位童鞋发的: 5版邮件,在用户量很大的情况下,如果做了分布式,如果在后端mysql上执行: mysql> show global status like 'Thread%'; Th ...
- 修改MySQL的时区,涉及参数time_zone (转)
首先需要查看mysql的当前时区,用time_zone参数 mysql> show variables like '%time_zone%'; +------------------+----- ...
- poj 1517 u Calculate e(精度控制+水题)
一.Description A simple mathematical formula for e is e=Σ0<=i<=n1/i! where n is allowed to go t ...
- Ruby中print、p、puts的区别
三个方法的作用都是将一个字符串打印到控制台 比较项目 puts print p 换行符 末尾添加换行符 末尾不加换行符 末尾添加换行符 非字符串对象的输出 调用该对象的to_s方法 ...
- Packet for query is too large
数据库:mysql5.6 framework: play framework 1.2.4 近日处理批量数据的insert,update,涉及的保存更新sql大概有18w.我的操作如下: 1)每次取10 ...
- NASA的CTO——开源软件使我们诚实
Chris C.Kemp,谷歌设置新职位CTO让他领导 原文: NASA's CTO: Open source software keeps us honest 作者: Shawn Freeman 译 ...
- MySQL的变量--系统变量、状态变量
MySQL的变量分为以下两种:1)系统变量:配置MySQL服务器的运行环境,可以用show variables查看2)状态变量:监控MySQL服务器的运行状态,可以用show status查看 一.系 ...
- 树莓派 Learning 002 装机后的必要操作 --- 00 修改键盘布局
树莓派 装机后的必要操作 - 修改键盘布局 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 上网查,发现树莓派的键盘布局不对,树莓派(ras ...