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

  • 相关阅读:
    callback的实现
    TypeId和IidManager关系
    Blocks的实现
    定义返回Block的函数
    NSString与奇怪的retainCount
    ARC下的所有权修饰符
    MAC安装MYSQL
    找出数组中只出现一次的数
    写在复习MVC后
    UITableViewHeaderFooterView的封装
  • 原文地址:https://www.cnblogs.com/xiaohua1/p/7007764.html
Copyright © 2011-2022 走看看