zoukankan      html  css  js  c++  java
  • 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("insert into db_demo(name,content) values('title','content')");
    // 返回值是影响行数

    // pdo的事务机制
    // 1关闭pdo的自动提交
    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
    // 2开启一个事务需要的方法
    $pdo->beginTransaction(); // 开启一个事务
    $pdo->commit(); // 提交事务
    $pdo->rollback(); // 回滚事务
    // 3一般事务处理是运行在 try...catch...语句中,当事务失败时执行 catch 代码段。

    try {
    $pdo->beginTransaction(); // 开启一个事务
    $row = null;
    $row = $pdo->exec("xxx"); // 执行第一个 SQL
    if (!$row)
    throw new PDOException('提示信息或执行动作'); // 如出现异常提示信息或执行动作
    $row = $pdo->exec("xxx"); // 执行第二个 SQL
    if (!$row)
    throw new PDOException('提示信息或执行动作');
    $pdo->commit();
    } catch (PDOException $e) {
    $pdo->rollback(); // 执行失败,事务回滚
    exit($e->getMessage());
    }
    // 事务机制的原理
    // 在事务中的 SQL 语句,如果出现错误,那么所有的 SQL 都不执行。当所有 SQL 有无误的时候,才提交执行。
    ?>

    <!-- pdo事务机制 -->
    <?php
    header('content-type:text/html;charset=utf-8');
    $pdo=new PDO('mysql:host=localhost;dbname=text','root','123');
    // $pdo->query('set names utf8');
    // $sql="insert into t1(`name`,`heights`) values('路禹真尼玛比帅','12')";
    // $pdo->exec($sql);
    try {
    $pdo->beginTransaction(); // 开启一个事务
    $row = null;
    $sql="insert into t1(`name`,`heights`) values('路禹你最帅','16')";
    $sqll="update t1 set name='事务机制' where id='30'";
    $row = $pdo->exec($sql); // 执行第一个 SQL
    if (!$row)
    throw new PDOException('第一个错误'); // 如出现异常提示信息或执行动作
    $rows = $pdo->exec($sqll); // 执行第二个 SQL
    if (!$rows)
    throw new PDOException('第二个错误');
    $pdo->commit();
    } catch (PDOException $e) {
    $pdo->rollback(); // 执行失败,事务回滚
    exit($e->getMessage());
    }
    // 事务机制的原理
    // 在事务中的 SQL 语句,如果出现错误,那么所有的 SQL 都不执行。当所有 SQL 有无误的时候,才提交执行。


    ?>

  • 相关阅读:
    .NET XmlNavigator with Namespace
    编程要素
    【FOJ】1962 新击鼓传花游戏
    【POJ】1389 Area of Simple Polygons
    【POJ】2482 Stars in Your Window
    【HDU】3265 Posters
    【HDU】1199 Color the Ball
    【HDU】3642 Get The Treasury
    【HDU】4027 Can you answer these queries?
    【HDU】1542 Atlantis
  • 原文地址:https://www.cnblogs.com/luyu521/p/6655802.html
Copyright © 2011-2022 走看看