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脚本的10个技巧(1)
Oct 09 PHP
php&amp;java(二)
Oct 09 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
php+mysql数据库查询实例
Jan 21 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
PHP编写RESTful接口
Feb 23 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
PHP基于面向对象封装的分页类示例
Mar 15 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与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
javascript常用的设计模式
2017/02/09 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
python中join()方法介绍
2018/10/11 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
python Shapely使用指南详解
2020/02/18 Python
python对文件的操作方法汇总
2020/02/28 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
洗发露广告词
2014/03/14 职场文书
《火烧云》教学反思
2014/04/12 职场文书
文明之星事迹材料
2014/05/09 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js