PHP基础 mysqli的事务处理

时间:2021-12-20 22:04:01
   1: <?php

   2: //                PHP 的mysqli的事务处理

   3: //========================================================

   4: //执行多条sql语句,如果都成功则提交事务,如果一个执行失败则回滚事务

   5: //把多条sql语句的执行看成一个sql语句,要么都成功,要么都失败

   6: //例:银行转账

   7: //mysql4.0以上版本都启用了事务

   8: //但目前只有InnoDB和BDB两种表类型支持事务,

   9: //在命令行中:默认创建的表类型为MyISAM表类型,是不支持事务的

  10: //在命令行中建表时添加 type=InnoDB ,默认自动提交事务autocommit,不能回滚

  11: //手动提交:

  12: //1.关闭自动提交 set autocommit=0;

  13: //2.开启事务 start transaction (mysqli中不需要开启,自动开启)

  14: //3.$mysqli->query($sql); 执行sql

  15: //4.判断执行是否成功

  16: //5.如果都成功,则提交事务commit(),否则回滚事务 rollback()

  17:  

  18: //创建连接对象

  19: $mysqli = new mysqli("localhost","root","1234","BankDB");

  20:  

  21: if($error=$mysqli->connect_error){

  22:     die("连接数据库失败:".$error);

  23: }

  24:  

  25: //设置传输字符编码

  26: $mysqli->query('set names utf8');

  27: // 或者

  28: // $mysqli->set_charset("uf8");

  29:  

  30: //关闭自动提交事务

  31: $mysqli->autocommit(false);

  32:  

  33: $error=true;

  34:  

  35: $price=50;

  36:  

  37: $sql1= "update uinfo set umoney=umoney-{$price} where uname='张三';";

  38: $sql2= "update uinfo set umoney=umoney+{$price} where uname='李四';";

  39:  

  40: //执行sql语句

  41: $result1 = $mysqli->query($sql1);

  42: if(!$result1) {

  43:     $error=false;

  44:     echo "从张三转出失败!\n";

  45: }

  46: else if($mysqli->affected_rows==0)

  47: {

  48:     $error=false;

  49:     echo "张三的钱没有变化!\n";

  50: }

  51:  

  52: //执行sql语句

  53: $result2 = $mysqli->query($sql2);

  54: if(!$result2){

  55:     $error=false;

  56:     echo "转入李四失败\n";

  57: } 

  58: else if($mysqli->affected_rows==0)

  59: {

  60:     $error=false;

  61:     echo "李四的钱没有变化!\n";

  62: }

  63:  

  64: //判断执行过程是否出错,如果语句都执行成功则提交事务,否则回滚事务

  65: if ($error) {

  66:     $mysqli->commit();

  67:     echo "事务提交,转账成功!";

  68: } else {

  69:     $mysqli->rollback();

  70:     echo "事务回滚,转账失败!";

  71: }

  72:  

  73: //打开自动提交事务

  74: $mysqli->autocommit(true);

  75:  

  76: $mysqli->close();

  77: ?>

PHP基础 mysqli的事务处理的更多相关文章

  1. php&plus;Mysqli利用事务处理转账问题实例

    本文实例讲述了php+Mysqli利用事务处理转账问题的方法.分享给大家供大家参考 <?php /**php+Mysqli利用事务处理转账问题实例 * author http://www.lai ...

  2. PHP MYSQLI中事务处理

    MYSQL事务处理让所有sql语句执行成功后才去处理,如果有一条没有成功或者报错就会回滚事务,防止敏感操作处理失败.MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其它类型是不支持的 ...

  3. php基础-mysqli

    基本八个步骤 //连接数据库 $link = mysqli_connect('localhost', 'root', ''); //判断是否连接成功 if (!$link) { exit('数据库连接 ...

  4. mysqli预处理和事务处理

    1 应用环境 mysqli预处理功能(大量数据处理时使用) 2 步骤 a)mysqli连接数据库 $mysqli = new mysqli('localhost','root','root','chu ...

  5. PHP数据库扩展mysqli的函数试题

    1.mysqli链接数据库的方式是什么? 2.mysqli获取链接错误号的属性是什么? 3.mysqli获取链接错误信息的属性是什么? 4.mysqli执行sql语句的函数是什么? 5.mysqli获 ...

  6. PHP处理MySQL事务代码

    php使用mysqli进行事务处理 <?php$db = new mysqli("localhost","root","",&quot ...

  7. C&num; Winform下一个热插拔的MIS&sol;MRP&sol;ERP框架12(数据处理基类)

    作为ERP等数据应用程序,数据库的处理是重中之重. 在框架中,我封装了一个数据库的基类,在每个模组启动或窗体启动过程中,实例化一个基类即可调用CRUD操作(create 添加read读取 update ...

  8. PHP&period;15-mysqli

    从PHP5.0开始可以使用mysql(i), 是一个面向对象的技术(新加功能都会以对象形式添加) i:表示改进,1. 功能增加了, 2,效率大大增加(以后的PHP项目改成mysqli),3,更稳定 m ...

  9. mysqli事务处理demo

    <?php  $mysqli=new mysqli("localhost", "root", "123456", "xsph ...

随机推荐

  1. SAP&lpar;ABAP&rpar; 显示等待图标的FM:SAPGUI&lowbar;PROGRESS&lowbar;INDICATOR-SAP进度条

    在执行一些数据量大的报表时候,为了防止用户认为是死机,可以再程序中添加正在处理的图标,可以CALL一个 FM来实现. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' ...

  2. JavaWeb基础&colon; Cookie

    Cookie相关类: javax.servlet.http.Cookie 用于创建Cookie response 里通过addCookie方法添加Cookie到响应头 request里通过getCoo ...

  3. 关于LockSupport

    concurrent包的基础 Doug Lea 的神作concurrent包是基于AQS (AbstractQueuedSynchronizer)框架,AQS框架借助于两个类:Unsafe(提供CAS ...

  4. spotlight监控工具使用

    利用spotlight工具可以监控如下系统:        1.Spotlight on Unix 监控Linux服务器 1)安装 Spotlight on Unix 2)配置spotlight登陆用 ...

  5. c&num;中的常用ToString&lpar;&rpar;方法总结

    c#中的常用ToString()方法总结 对于int,double等的tostring: C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToStri ...

  6. http头信息

    请求头:用于告诉服务器,客户机支持的数据类型accept-charset:用于告诉服务器,客户机采用的编码accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式Host:客户机通过这 ...

  7. VBS自编写脚本。(实现批量修改文件名且在执行前,备份原有文件夹中的文件)

    '=========================================================================='' VBScript Source File - ...

  8. Barnicle

    Barnicle Barney is standing in a bar and starring at a pretty girl. He wants to shoot her with his h ...

  9. saiku的安装教程

    Saiku是一个模块化的开源分析套件,它提供轻量级的OLAP(联机分析处理),并且可嵌入.可扩展.可配置. 环境准备 1.JDK5及以上版本. 2.Saiku Server最新版本,下载地址:http ...

  10. 《About Face 3:交互设计精髓》读书笔记(一)

    第一章 目标导向设计 当今数字产品的创造过程 市场营销人员对于产品设计过程的贡献,通常局限于需求列表这些需求同用户的实际需要与期望无关,主要在于追赶竞争对手,按照任务清单管理IT资源,以及基于市场调查 ...