• <?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. JPA的一对多映射(双向)关联

    实体Customer:用户. 实体Order:订单. Customer和Order是一对多关系.那么在JPA中,如何表示一对多的双向关联呢? JPA使用@OneToMany和@ManyToOne来标识 ...

  2. ng-options指令语法

    ng-options一般有以下用法 对于数组: label for value in array select as label for value in array label group by g ...

  3. hadoop2.6环境中部署hive1.2.2的错误

    1.hive配置遇到的问题( Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D) 解决 ...

  4. Linux学习(三)putty,xshell使用以及密匙登陆

    一.认识xshell,putty 他们都是服务器登陆客户端.xshell用户体验更好一点.但这里都学一下. putty下载地址:https://www.chiark.greenend.org.uk/~ ...

  5. cocos-Lua中的class与require机制

    cocos-Lua中的class与require机制 local layer = require("PaiGow.src.GamePlayerListLayer")local Ga ...

  6. AngularJS学习篇(二十四)

    AngularJS 应用 <html ng-app="myNoteApp"> <head> <meta charset="utf-8&quo ...

  7. CSS fliter

    Filters主要是运用在图片上,以实现一些特效.(也能运用于video上),类似滤镜效果   img {         -webkit-filter:grayscale(1); }      gr ...

  8. display: run-in

    If a sibling block box (that does not float and is not absolutely positioned) follows the run-in box ...

  9. mysql +keeplive

    下载tar包 ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6. ...

  10. flask中下载服务器上特定路径的文件

    使用flask下载服务器上某个路径下的文件 path:文件路径以及需要下载的文件,直接写入参数有安全隐患,实际应用中需要判断权限之类的 from flask import send_file, mak ...