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 有无误的时候,才提交执行。


    ?>

  • 相关阅读:
    PAT 甲级 1041 Be Unique (20 分)(简单,一遍过)
    [精]Odoo 8.0深入浅出开发教程-模块开发基础
    iOS开发- UILabel 自己主动换行 及 高度自适应
    Android
    权限管理表结构设计
    创建SQL语句_面试
    Hasen的linux设备驱动开发学习之旅--时钟
    关于源程序到可运行程序的过程
    微信服务号 微信支付开发
    MongoDB基础入门视频教程
  • 原文地址:https://www.cnblogs.com/luyu521/p/6655802.html
Copyright © 2011-2022 走看看