龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

MySQL pdo 事务

时间:2015-04-06 11:43来源:网络整理 作者:网络 点击:
分享到:
pdo 事务 pdo 事务**新手**[代码片段(101行)]

pdo 事务

新手

<?php

    //pdo 实现mysql 事务处理 简单示例
    /*
        实现向数据库中写入多条数据的事务
        insert into test values ('test123', 'test123')
    */

    $type     = 'mysql';        //要连接的数据库类型
    $host     = 'localhost';    //数据库主机
    $dbname   = 'test';         //要选择的数据库名称
    $password = '';
    $username = 'root';

    $dsn = "{$type}:dbname={$dbname};host={$host}";

try{

    //连接数据库
    $pdo = new PDO($dsn, $username, $password);

    //编码
    $pdo->exec("set names utf8");

    //设置错误提示方式
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

    //开启标准事务
    $pdo->beginTransaction();

    //构造sql语句
    //$sql = "insert into test values (?,?)";
    $sql = "insert into test values (:user, :password)";    
    //或者使用此sql语句 :user :password 与问号功能相似 绑定参数

    $stmt = $pdo->prepare($sql);

    //为sql语句中的变量绑定变量
    $stmt->bindParam(':user', $username);
    $stmt->bindParam(':password', $password);

    //为sql语句中的变量 赋值
    $username = 'test123';
    $password = '123456';

    $stmt->execute();

    $rows = $stmt->rowCount();

    if($rows<1){
        //如果失败则抛出异常
        throw new PDOexception('第一句sql语句执行失败!', '01');

    }

    $username = 'hello123';
    $password = '123456';

    $stmt->execute();

    $rows = $stmt->rowCount();

    if($rows<1){
        //如果失败则抛出异常
        throw new PDOexception('第二句sql语句执行失败!', '02');

    }

    $username = 'world123';
    $password = '123456';

    $stmt->execute();

    $rows = $stmt->rowCount();

    if($rows<1){
        //如果失败则抛出异常
        throw new PDOexception('第三句sql语句执行失败!', '02');

    }

    //如果没有异常被抛出则 sql语句全部执行成功 提交事务
    $pdo->commit();

}catch(PDOexception $e){

    //如果有异常被抛出 则事务失败 执行事务回滚
    $pdo->rollback();

    //输出异常信息
    echo $e->getCode().'-----'.$e->getMessage();

    $pdo = null;

}

?>
精彩图集

赞助商链接