PDO 事务

$dsn = ‘mysql:dbname=wxadmin;host=127.0.0.1‘;
$user = ‘root‘;
$password = ‘‘;

try{

    $pdo = new PDO($dsn,$user,$password);

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

    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); #开启异常模式 ( 提示的错误信息更具体 )
    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);                   #关闭自动提交 ( 使用事务前必须关闭 )

}catch(PDOException $es){

    echo ‘Error: ‘.$es->getMessage();

}

       #    id为1的用户  转账100元  给  id为2的用户

    try{

        $pdo->beginTransaction();

        $sql = ‘UPDATE sw_test SET num = num - 100 WHERE id = 1 AND num >= 800‘;

        $affected_rows = $pdo->exec($sql);

        if($affected_rows==false || $affected_rows===false){

            throw new PDOException("转出失败");

        }

        $sql = ‘UPDATE sw_test SET num = num + 100 WHERE 2id = 2‘;

        $affected_rows = $pdo->exec($sql);

        if($affected_rows==false || $affected_rows===false){

            throw new PDOException("转入失败");
        }

        $pdo->commit();

        echo ‘交易成功‘;

    }catch(PDOException $e){

        $pdo->rollback(); // 只要捕获异常则回滚

        echo $e->getMessage();

    }

    // 事务结束  重新开启自动提交
    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
时间: 2024-10-10 02:10:01

PDO 事务的相关文章

pdo 事务机制

<?php header('content-type:text/html;charset=utf-8');$pdo=new PDO('mysql:host=localhost;dbname=dbname','root','123'); $pdo->query('set names utf8');$res=$pdo->query('select * from table');//预处理数据$data=$res->fetch();//输出数据 $pdo->exec("i

[PHP] - PDO事务操作

PHP使用PDO事务操作数据库. 参考文章: http://php.ncong.com/mysql/pdo/pdo_shiwu.html 上代码: <!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php t

PHP中PDO事务的使用方法

事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操作. 如果执行成功, 那么这一系列操作都会永久有效. 事务很好的解决了在操作数据库的时候不同步的问题. 同时, 通过事务去执行大数据量的时候, 执行效率可以提高很多很多. 在 PDO 中, 事务已经显得非常简单. 下面一个基本的例子, 演示了向 SQLite 数据库插入 1000000 条数据, 并

PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05

之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的:那么如果访问其他类型的数据库呢? 那么这就用到了PDO(数据访问抽象层). 一.关于PDO基本语句(以MySQL数据库为例,因为电脑没有其他的数据库) (1)造PDO对象 $dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","123"); 格式: $dsn

7.19 PDO事务机制

header("Content-type: text/html; charset=utf-8");    $pdo = new PDO('mysql:host=localhost;dbname=ceshi', "root", "");    $pdo->exec("set names utf8");    //为下面的try()catch(){}抓到的异常,定义错误类型    $pdo->setAttribute(

PDO事务控制

<?php header('content-type:text/html;charset=utf-8'); $dsn='mysql:host=localhost;dbname=test'; $pdo=new PDO($dsn,'root',''); $pdo->exec('set names utf8'); $pdo->beginTransaction(); //开启事务 $sql1="UPDATE users SET money=money+100 WHERE id=100&

PHP PDO 事务与自动提交

现在通过 PDO 连接上了,在开始进行查询前,必须先理解 PDO 是如何管理事务的. 事务支持四大特性(ACID): 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 通俗地讲,在一个事务中执行的任何操作,即使是分阶段执行的,也能保证安全地应用于数据库,并在提交时不会受到来自其他连接的干扰. 事务操作也可以根据请求自动撤销(假设还没有提交),这使得在脚本中处理错误更加容易. 事务通常是通过把一批更改"积蓄"起来

PDO事务管理DEMO

try { $dsn = "mysql:host=127.0.0.1;port=3306;dbname=dab"; $pdo = new PDO($dsn, 'root', ''); $pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT, false); $pdo -> beginTransaction(); $sql = "update DAB_NTOS_ADMIN set name = :name where id = :id&q

事务转账

1 /** 2 * 普通的连接 3 */ 4 mysql_connect('127.0.0.1','root','root'); 5 mysql_select_db('news'); 6 mysql_query('BIGIN');//开启事务 7 mysql_query('set names utf8'); 8 mysql_query("update bank set money=money-500 where name='cnn'"); 9 $q1=mysql_affected_ro