php+mysqli事务控制实现银行转账实例


Posted in PHP onJanuary 29, 2015

本文实例讲述了php+mysqli事务控制实现银行转账的方法。分享给大家供大家参考。具体分析如下:

事务控制,也就是说所有的语句执行成功后,才会提交。否则,如果前面有语句执行成功,而后面没有执行成功,则回滚到执行之前的状态。通过银行转账的案例来说明这个应用。一个账号转了钱出去,另一个账号必须有钱转入,这样才算成功。

代码如下:

<?php
//1、创建数据库连接对象
$mysqli = new MySQLi("localhost","root","123456","liuyan");
if($mysqli->connect_error){
 die($mysqli->connect_error);
}
$mysqli->query("set names 'GBK'");

$mysqli->autocommit(false);
//首先设置autocommit为false,也就是不自动提交

$sql1 = "update account set balance=balance-2 where id=1;";
$sql2 = "update account set balance=balance+2 where id=2;";
$res1 =$mysqli->query($sql1) or die($mysqli->error);
$res2 =$mysqli->query($sql2) or die($mysqli->error);

if(!$res1 || !$res2){
 echo "转账失败";
 $mysqli->rollback();//如果有一条不成功,则回滚
}else{
 $mysqli->commit();//两条语句都执行成功,则提交
 echo "转账成功";
}
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP的FTP学习(三)
Oct 09 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
php5.5新数组函数array_column使用
Jul 08 PHP
将php数组输出html表格的方法
Feb 24 PHP
怎样搭建PHP开发环境
Jul 28 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
PHP运行模式汇总
Nov 06 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 #PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 #PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 #PHP
php+mysqli使用面向对象方式更新数据库实例
Jan 29 #PHP
新浪SAE搭建PHP项目教程
Jan 28 #PHP
php+mysqli数据库连接的两种方式
Jan 28 #PHP
PHP实现返回JSON和XML的类分享
Jan 28 #PHP
You might like
php针对cookie操作的队列操作类实例
2014/12/10 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
PHP new static 和 new self详解
2017/02/19 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
跟老齐学Python之网站的结构
2014/10/24 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
python实现在sqlite动态创建表的方法
2015/05/08 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
python之super的使用小结
2018/08/13 Python
Python流程控制 while循环实现解析
2019/09/02 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
python读取xml文件方法解析
2020/08/04 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
学生会副主席竞聘书
2014/03/31 职场文书
《金子》教学反思
2014/04/13 职场文书
安全演讲稿开场白
2014/08/25 职场文书
万里长城导游词
2015/01/30 职场文书
党校学习个人总结
2015/02/15 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android