zoukankan      html  css  js  c++  java
  • PDO中构建事务处理的应用程序

     1 <meta http-equiv="Content-Type" content="text/html";charse="utf-8" />
     2 <?php
     3     
     4     /* 将一系列的更新操作放到beginTransaction()和commit()函数中调用,并通过try块执行,就可以保证在更改之前完成,其他人无法看到 */
     5     $dsn = 'mysql:dbname=test;host=localhost';
     6     $username = 'root';
     7     $password = '';
     8     $opt = array(PDO::ATTR_PERSISTENT => true);
     9     
    10     //持续连接数据库
    11     try{
    12         $dbh = new PDO($dsn,$username,$password,$opt);
    13     }catch(PDOException $e){
    14         echo '数据库连接失败'.$e -> getMessage();
    15     }
    16     
    17     $dbh -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置PDO异常处理模式
    18     $dbh -> setAttribute(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交
    19     
    20     try{
    21         $price = 80;
    22         $dbh -> beginTransaction();//开始事备
    23         
    24         $affected_row = $dbh -> exec("update account set cash = cash-{$price} where name='userA'");
    25         if($affected_row > 0){
    26             echo "userA成功转出{$price}元人民币<br>";
    27         }else{
    28             throw new PDOException('usrA转出失败');
    29         }
    30         
    31         $affected_row = $dbh -> exec("update account set cash = cash + {$price} where name='userB'");
    32         if($affected_row > 0){
    33             echo "userB成功转入{$price}元人民币<br>";
    34         }else{
    35             throw new PDOException('usrB转入成功');
    36         }
    37         
    38         echo '交易成功';
    39         $dbh -> commit();//如果执行到此处说明两次语句执行成功,整个事务成功
    40         
    41     }catch(PDOException $e){
    42         echo "交易失败".$e -> getMessage();
    43         $dbh -> rollback();//如果事务执行失败,回滚事务
    44     }
    45     
    46     $dbh -> setAttribute(PDO::ATTR_AUTOCOMMIT,1);//重新打开自动提交
    View Code
  • 相关阅读:
    js把日期字符串转换成时间戳
    JS array 数组
    for循环中的if嵌套
    第三章:图像增强
    直方图均衡化
    第二章:数字图像处理基础
    马赫带效应
    图片格式
    4邻接,8邻接和m邻接
    第一章:绪论
  • 原文地址:https://www.cnblogs.com/banshaohuan/p/5136420.html
Copyright © 2011-2022 走看看