7.19 PDO事务机制

header("Content-type: text/html; charset=utf-8");
    $pdo = new PDO('mysql:host=localhost;dbname=ceshi', "root", "");
    $pdo->exec("set names utf8");
    //为下面的try()catch(){}抓到的异常,定义错误类型
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
   //开始事务机制
   $pdo->beginTransaction();
   //异常捕获(异常)
   try{
    $sql1 = "update user_money set money=(money-300) where id=1";
    $pdo->exec($sql1);
  
    $sql2 = "update user_money set money=(money+300) where id=2";
    $pdo->exec($sql2);
  
    $sql3 = "update user_money set money=(money-200) where id=2";
    $pdo->exec($sql3);
 
    $sql4 = "update user_money set money=(money+200) where id=3";
    $pdo->exec($sql4);
    //没有异常则提交该事件
    echo "转账成功";
    $pdo->commit();//提交事件,只有提交了事件,才能真正在数据库进行修改
   }catch(PDOException $pe){
    $errorInfo = $pe->getMessage();//得到错误的具体信息
    $errorCode = $pe->getCode();//得到错误的代号
    $errorLine = $pe->getLine();//得到错误的行号
    echo "<p>转账失败原因:</p>";
    echo "<p>{$errorInfo}</p>";
    echo "<p>{$errorCode}</p>";
    echo "<p>{$errorLine}</p>";
    //回滚事件,如果检测到有异常,前面的几步都要回滚到最初的状态
    $pdo->rollBack();
   }

原文地址:https://www.cnblogs.com/sunhao1987/p/9338584.html