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();
    }

  • 相关阅读:
    久违了,我的博客
    眼前一亮的WI微逸输入法
    致第一次安装(yong)小小输入法的你
    输入法使用体验及引申
    小小输入法使用小记
    RIME-使用小心得
    FreeRTOS run on eclipse
    流行输入法使用小记
    FreeBSD虚拟机——小折腾
    vmware版本选择
  • 原文地址:https://www.cnblogs.com/xiaohua1/p/7007764.html
Copyright © 2011-2022 走看看