语法
    start transaction 或 begin 开启事务
    commit 提交事务
    rollback 回滚事务

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>转账功能</title>
    6. </head>
    7. <body>
    8. <?php
    9. if(!empty($_POST)){
    10. $dsn='mysql:host=localhost;port=3306;dbname=test;charset=utf8';
    11. $pdo=new PDO($dsn,'root','root');
    12. $out=$_POST['card_out'];
    13. $in=$_POST['card_in'];
    14. $money=$_POST['money'];
    15. $pdo->beginTransaction();
    16. $step1=$pdo->exec("update bank set balance=balance-$money where cardid='$out'");
    17. $step2=$pdo->exec("update bank set balance=balance+$money where cardid='$in'");
    18. $stmt=$pdo->query("select balance from bank where cardid='$out'");
    19. $stmt2=$pdo->query("select balance from bank where cardid='$in'");
    20. $step3=$stmt->fetchColumn()>=0?1:0;
    21. $step4=$stmt2->fetchColumn()>=0?1:0;
    22. if($step1 && $step2 && $step3 &&$step4){
    23. $pdo->commit ();//提示事务
    24. echo '转账成功';
    25. }else {
    26. $pdo->rollBack (); //回滚事务
    27. echo '转账失败';
    28. }
    29. }