• <?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+Mysql基于事务处理实现转账功能的方法的更多相关文章

  1. 关于MySQL的事务处理及隔离级别

    原文地址 :http://blog.sina.com.cn/s/blog_4c197d420101awhc.html 事务是DBMS得执行单位.它由有限得数据库操作序列组成得.但不是任意得数据库操作序 ...

  2. mysql的事务处理与锁表

    数据库的事务处理可以保证一组处理结果的正确性.mysql中只有INNODB和BDB引擎的数据表才支持事务处理,对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法来实现相同的功能. mysql的 ...

  3. MySQL的事务处理及隔离级别

      事务是DBMS得执行单位.它由有限得数据库操作序列组成得.但不是任意得数据库操作序列都能成为事务.一般来说,事务是必须满足4个条件(ACID)       原子性(Autmic):事务在执行性,要 ...

  4. 浅析Mysql 数据回滚错误的解决方法

    介绍一下关于Mysql数据回滚错误的解决方法.需要的朋友可以过来参考下 MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollbac ...

  5. 浅析Mysql数据回滚错误的解决方法

    介绍一下关于Mysql数据回滚错误的解决方法.需要的朋友可以过来参考下   MYSQL的事务处理主要有两种方法.   1.用begin,rollback,commit来实现   begin 开始一个事 ...

  6. jsp+servlet+mysql 实现简单的银行登录转账功能

    jsp+servlet+mysql 实现简单的银行登录转账功能 [前期的准备] html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)先从 ...

  7. Dao跨事务调用实现转账功能

    1.首先在数据库当中创建数据库,并且创建它的 实现类 package com.beiwo.epet.entity; public class Account { private int id; pri ...

  8. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...

  9. MySQL 基于lvm2的备份实战演练 (快照备份)

    前言: lvm2实现热备的原理是基于lvm2的快照功能,lvm2可以实现数据集不大的情况下的热备. 实战过程如下:这里的演示是在一台Mariadb服务器上进行创建快照,将快照中的文件scp到备份服务器 ...

随机推荐

  1. python去除读取文件中多余的空行

    今天在写登录程序练习的时候,黑名单文件中多了几行空行.导致运行的时候报错:IndexError: list index out of range 代码 brackData = open(brackDa ...

  2. 【hihoCoder】#1039 : 字符消除 by C solution

    #1039 : 字符消除 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消 ...

  3. 使用bower init创建bower.json文件

    使用bower init 可以快速创建bower.json文件 bower init 回答一系列问题后就可以了,其中大部分问题可以按enter跳过.

  4. Ubuntu上64位adv无法创建问题

    Ubuntu上安装android开发环境,前面都成功了,但到了最后创建adv的时候却总是失败. 出现了这个问题.最后,上网找了这个教程http://blog.sina.com.cn/s/blog_66 ...

  5. 套接字(linux相关)

    前言:略 一.前因 一切从tcp.udp开始. 众所周知,网络模型一般有两种模型,一种为OSI概念模型(七层),另一种为tcp/ip网络模型(四层). tcp/ip应用层对应OSI的应用层.显示层.会 ...

  6. BootStrap Table使用小结

    1.在当前表格的最后新增数据 $("#data_module_table").bootstrapTable('append', data.data);//data.data---- ...

  7. 移动开发 meta元素

    meta标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务.   SEO优化: &l ...

  8. js数组元素的添加和删除

    简单测试例子: var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "cc ...

  9. alert 执行顺序问题

    <p><span id="span1">Hello World!</span></p> <script type=" ...

  10. javascript 二维(多维)数组的复制问题

    最近在项目中遇到一个动画暂停的效果,需要在动画停止的时候检测当前坐标和已经运行的时间,从而调节时间轴为再次运行时加速. 但是在数组保存方面折腾了半天. var orbitArray = [], lin ...