zoukankan      html  css  js  c++  java
  • 事物处理

     1 <?php
     2     $pdo = new PDO("mysql:host=localhost;dbname=demo", "mysql_urer", "mysql_password");
     3     $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);  //设置异常处理模式
     4     $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);                   //关闭自动提交
     5 
     6     /* 使用异常处理试着去执行转账的事务,如果有异常转到catch区块中 */
     7     try {
     8         $price = 80;                //商品交易价格,也是转账金额
     9         $pdo->beginTransaction();   //开始事备
    10 
    11         $affected_rows = $pdo->exec("update account set cash=cash-{$price} where name='userA'"); //转出
    12          
    13         if($affected_rows > 0)
    14             echo "userA成功转出{$price}元人民币<br>";
    15         else
    16             throw new PDOException('userA转出失败');      //失败抛出异常,不向下再执行,转到catch区块
    17 
    18         $affected_rows = $pdo->exec("update account set cash=cash+{$price} where name='userB'"); //转入
    19     
    20         if($affected_rows > 0)
    21             echo "成功向userB转入{$price}元人民币<br>";
    22         else
    23             throw new PDOException('userB转入失败');      //失败抛出异常,不向下再执行,转到catch区块
    24 
    25         echo "交易成功!";
    26         $pdo->commit();             //如果执行到此处表示前面两个查询执行成功,整个事务执行成功
    27     }catch(PDOException $e){
    28         echo "交易失败:".$e->getMessage();
    29         $pdo->rollback();           //如果执行到此处理表示事务中的语句出问题了, 整个事务全部撤消
    30     }
    31 
    32     $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);          //重新开启自动提交
    33 
    34     
    35     

  • 相关阅读:
    lr http_get访问webservice
    lr http_post请求webservice
    快速幂(fast power)
    运算符重载
    1010 Radix 二分
    1054 The Dominant Color
    1042 Shuffling Machine
    1059 Prime Factors
    1061 Dating
    1078 Hashing
  • 原文地址:https://www.cnblogs.com/qingxiaoping/p/5003345.html
Copyright © 2011-2022 走看看