PHP+Mysql基于事务处理实现转账功能的方法
作者:沉淀岁月 发布时间:2023-10-21 16:53:06
标签:PHP,Mysql,事务处理
本文实例讲述了PHP+Mysql基于事务处理实现转账功能的方法。分享给大家供大家参考。具体如下:
<?php
header("Content-Type:text/html;charset=utf-8");
$mysqli=new mysqli("localhost","root","","test");
if(mysqli_connect_errno())
{
printf("连接失败:%s<br>",mysqli_connect_error());
exit();
}
$success=TRUE;
$price=8000;
$result=$mysqli->query("select cash from account where name='userA'");
while($row=$result->fetch_assoc())
{
$value=$row["cash"];
echo $value;
}
$mysqli->autocommit(0);
if($value>=$price){
$result=$mysqli->query("UPDATE account set cash=cash-$price where name='userA'");
}else {
echo '余额不足';
exit();
}
if(!$result or $mysqli->affected_rows!=1)
{
$success=FALSE;
}
$result=$mysqli->query("UPDATE account set cash=cash+$price where name='userB'");
if(!result or $mysqli->affected_rows!=1){
$success=FALSE;
}
if($success)
{
$mysqli->commit();
echo '转账成功!';
}else
{
$mysqli->rollback();
echo "转账失败!";
}
$mysqli->autocommit(1);
$query="select cash from account where name=?";
$stmt=$mysqli->prepare($query);
$stmt->bind_param('s',$name);
$name='userA';
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($cash);
while($stmt->fetch())
echo "用户userA的值为:".$cash;
$mysqli->close();
?>
数据库SQL语句如下:
create table account{
userID smallint unsigned not null auto_increment,
name varchar(45) not null,
cash decimal(9,2) not null,
primary key(userID)
)type=InnoDB;
insert into account(name,cash) values ('userA','2000');
insert into account(name,cash) values ('userB','10000');
希望本文所述对大家的php程序设计有所帮助。


猜你喜欢
- 搭建FTP,或者是搭建网络文件系统,这些方法都能够实现Linux的目录共享。但是FTP和网络文件系统的功能都过于强大,因此它们都有一些不够方
- 天我们看看import的有关内容。编程时总是用到import导入,动不动就导入,很简单,但import到底是个什么功能,它的本质是什么?一.
- MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两
- 用法一 SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiser
- matlab图像滤波详解(二维傅里叶滤波)在matlab中,图像滤波有很多中比如平滑滤波(smooth()函数)中值滤波medfilt2()
- 1、from ... import 导入from package import module1, module2, module3, ...
- MooTools 1.2介绍原文地址:30 Days of Mootools 1.2 Tutorials - Day 1 - Intro t
- 本文实例讲述了JavaScript设计模式之代理模式。分享给大家供大家参考,具体如下:一、代理模式概念代理,顾名思义就是帮助别人做事,GoF
- 前言上一篇博客我们知道的Mysql事务的隔离机制和实现,以及锁的详细解析链接: MySQL脏读幻读不可重复读及事务的隔离级别和MVCC、LB
- 背景一直对语音合成系统比较感兴趣,总想能给自己合成一点内容,比如说合成小说,把我下载的电子书播报给我听等等。语音合成系统其实就是一个基于语音
- 内容摘要: 首先来讲讲 Session 的好处,它可以用来记录客户端私有的
- 二、导航功能增强 1. 下拉菜单中的链接(Links in Select Menu)Q:我如何实现在下拉菜单中链接到不
- nodejs和nginx都可以反向代理,解决跨域问题。本地服务const express = require('express
- 制作圆角导航其实跟制作圆角边框是一样的道理,有一种很常见的方法就是使用CSS绝对定位,切四个圆角的小图片,然后分别定位在四个角,这样就可以实
- 这篇文章主要介绍了python识别html主要文本框过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 关于F.normalize计算理解动机最近多次看到该方法出现,于是准备了解一下,搜了后发现原来是所谓的L2 norm计算简介函数定义torc
- 我们来使用background 插入flash播放器播放音乐刚刚乱试一翻搞出这个,有意思吗?请在IE6下测试运行代码框<!DOCTYP
- 在过去的十年中,MySQL已经成为广受欢迎的数据库,而WordPress博客使用的是MySQL数据库,虽然使用插件可以解决一些问题,但是实现
- 最近,我在做网页的时候,经理老是反应网页中一些栏目中没有背景图片。我说:背景图片有的,你刷新看看。但是他说:我可以刷新看看,但是你不能老是让
- Rotation滤镜可以使图片产生旋转效果,注意必须是IE5.5及IE6.0才能看到!方法如下:制作过程:一、准备图片1张。二、建立一个CS