zoukankan      html  css  js  c++  java
  • 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: ?>
  • 相关阅读:
    POJ 1003 解题报告
    POJ 1004 解题报告
    POJ-1002 解题报告
    vi--文本编辑常用快捷键之光标移动
    常用图表工具
    September 05th 2017 Week 36th Tuesday
    September 04th 2017 Week 36th Monday
    September 03rd 2017 Week 36th Sunday
    September 02nd 2017 Week 35th Saturday
    September 01st 2017 Week 35th Friday
  • 原文地址:https://www.cnblogs.com/lt-style/p/3511525.html
Copyright © 2011-2022 走看看