zoukankan      html  css  js  c++  java
  • 事物的应用

    有时候程序处理的时候需要两项或者多项数据处理一个失败其他的都不再执行,之间的关系是一错则全错,全都执行成功才算成功;这里就需要用到事务处理,错误回滚;

    废话不多说  上代码:

    $LinkID =mysql_connect('localhost','root','root');//连接数据库
    mysql_select_db('test',$LinkID);//将要操作的数据库
    mysql_query("set names utf8");//设置编码格式
    mysql_query("SET AUTOCOMMIT=0"); //设置MySQL不自动提交,需自行用commit语句提交
    $sql = "insert into t1(username,password,rtime,rip) values('shiwu2','shiwu2','456456456','456456456')";//第一条执行语句
    $sql2 = "insert into t1(username,password,rtime,rip) values('shiwu2',shiwu2','456456456','456456456')";//这条我故意写错
    $res = mysql_query($sql);//执行第一条sql语句
    $res1 = mysql_query($sql2);//执行第二条sql语句
    if($res && $res1){
        mysql_query("COMMIT");//提交事务
        echo '提交成功。';
    }else{
        mysql_query("ROLLBACK");//至少有一条sql语句执行错误,事务回滚
        echo '数据回滚。';
    }
    mysql_query("END");//事务结束




    下面的写法是PHP的PDO的实现方式

    try{
        //1.实例化PDO对象
        $pdo = new PDO("mysql:host=localhost;dbname=test","root","root",array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        //1.开启事务
        $pdo->beginTransaction();
        //2.执行sql语句
        $pdo->exec("insert into t1(username,password,rtime,rip) values('shiwu2','shiwu2','456456456','456456456')");
        $pdo->exec("insert into t2(username,password,rtime,rip) values('shiwu2',shiwu2','456456456','456456456')");
        //提交事务
        $pdo->commit();
        //PDO   PDOStatement  PDOException
    }catch(PDOException $e){
        echo "aaaaaaaaaa";
        //回滚事务
        $pdo->rollBack();
    }

  • 相关阅读:
    luogu P3368 【模板】树状数组 2
    dp
    vijos 羽毛
    luogu tyvj 纪念品分组
    codevs 1259 最大正方形子矩阵 WD
    python 序列化之pickle模块 json模块
    python 类的进阶
    python 面向对象与类的基本知识
    python 异常处理
    python time模块 sys模块 collections模块 random模块 os模块 序列化 datetime模块
  • 原文地址:https://www.cnblogs.com/xiaohua1/p/7007764.html
Copyright © 2011-2022 走看看