• PHP基础 mysqli的事务处理


       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 "从张三转出失败!
    ";
      45: }
      46: else if($mysqli->affected_rows==0)
      47: {
      48:     $error=false;
      49:     echo "张三的钱没有变化!
    ";
      50: }
      51:  
      52: //执行sql语句
      53: $result2 = $mysqli->query($sql2);
      54: if(!$result2){
      55:     $error=false;
      56:     echo "转入李四失败
    ";
      57: } 
      58: else if($mysqli->affected_rows==0)
      59: {
      60:     $error=false;
      61:     echo "李四的钱没有变化!
    ";
      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: ?>
  • 相关阅读:
    ThinkPHP 3 的输出
    zookeeper 伪集群模式
    zookeeper
    MVC模式和URL访问
    全民上云时代,如何降低成本?
    华为云教你7天玩转电商应用性能调优,课程免费速来报名!
    一统江湖的大前端(6)commander.js + inquirer.js——懒,才是第一生产力
    一统江湖的大前端(5)editorconfig + eslint——你的代码里藏着你的优雅
    一统江湖的大前端(4)shell.js——穿上马甲我照样认识你
    【Python3网络爬虫开发实战】1.3.1-lxml的安装
  • 原文地址:https://www.cnblogs.com/lt-style/p/3511525.html
Copyright © 2020-2023  润新知