PDO事务处理

<?php
  header('content-type:text/html;charset=utf-8');
  //pdo事务处理
    try{
      $pdo=new PDO("mysql:host=localhost;dbname=test","root","root");
    //设置事务提交方式为手动提交
    //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
    //把sql语句执行错误的信息显示出来,设置为使用异常处理类来处理
     $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
     $pdo->query("select * from test");
    }catch(PDOException $e){
      echo $e->getMessage();
    }
   
    try{
       //执行所有sql语句的位置
       //执行事务:张三向李四转账
        //开启事务
       $pdo->beginTransaction();
       $sql="update money  set money=money-500 where username='zhangsan'";
       $res1=$pdo->exec($sql);
       if(!$res1){
          throw new PDOException("张三转出失败");
          die;
       }
       $sql="update money set money=money+500 where username='lisi'";
       $res2=$pdo->exec($sql);
       if(!$res2){
          throw new PDOException("李四入账失败");
          die;
       }
       //两者都成功,提交事务
       $pdo->commit();

    }catch(PDOException $e){
       //捕捉错误信息
       echo $e->getMessage();
       echo "转账失败";
       //事务回滚
       $pdo->rollback();
    }
    //成功后自动提交
    //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
 

你可能感兴趣的:(PDO事务处理)