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 cli 方式 在crotab中运行解决
Feb 08 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
WordPress后台中实现图片上传功能的实例讲解
Jan 11 PHP
Zend Framework教程之Zend_Config_Ini用法分析
Mar 23 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
JS实现多选框的操作
2020/06/24 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
Python之os操作方法(详解)
2017/06/15 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
生产内勤岗位职责
2013/12/07 职场文书
公司承诺书怎么写
2014/05/24 职场文书
万里长城导游词
2015/01/30 职场文书
开展警示教育活动总结
2015/05/09 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
python基础之函数的定义和调用
2021/10/24 Python
Redis主从复制操作和配置详情
2022/09/23 Redis