php的PDO事务处理机制实例分析

 更新时间:2017年02月16日 08:51:59   作者:水晶依恋  
这篇文章主要介绍了php的PDO事务处理机制,结合实例形式分析了事务的原理、功能及PDO处理事务的具体操作步骤与实现技巧,需要的朋友可以参考下

本文实例讲述了php的PDO事务处理机制。分享给大家供大家参考,具体如下:

事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行,并且在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操作. 如果执行成功, 那么这一系列操作都会永久有效. 事务很好的解决了在操作数据库的时候不同步的问题. 同时, 通过事务去执行大数据量的时候, 执行效率可以提高很多很多.

在PDO中同样可以实现事物处理的功能

1. 开启事物:beginTransaction()方法

beginTransaction()方法将关闭自动提交(autocommit)模式,直到事物被提交或者回滚以后才恢复

2. 提交事物:commit()方法

commit()方法完成事物的提交操作,成功则返回true,否则返回false。

3. 事物回滚:rollBack()方法

rollBack()方法执行事物的回滚操作。

例如:

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='password';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try {
 $pdo = new PDO($dsn, $user, $pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
 $pdo->beginTransaction();//开启事物
 $query = "insert into user (username,password) values('admin','123456')";//需要执行的sql语句
 $res = $pdo->prepare($query);
 if ($res->execute()) {
  echo "数据添加成功";
 }else{
  echo "数据添加失败";
 }
 $pdo->commit();//执行事物的提交操作
}catch(PDOException $e){
 die("Error!: ".$e->getMessage().'<br>');
 $pdo->rollBack();//执行事物的回滚操作
}

补充:

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单 元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

事务是数据库运行中的一个逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

相关属性:

① 原子性(Atomic)(Atomicity)

事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。

② 一致性(Consistent)(Consistency)

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数 据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转 帐的应用程序时,应避免在转帐过程中任意移动小数点。

③ 隔离性(Insulation)(Isolation)

由并发事务所作的修 改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不 会查看中间状态的数据。这称为隔离性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化 时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务 数,所以一些应用程序降低隔离级别以换取更大的吞吐量。

④ 持久性(Duration)(Durability)

事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+Oracle数据库程序设计技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP如何实现防止重复提交

    PHP如何实现防止重复提交

    防抖(Debounce)是一种防止重复提交的策略,它通过延迟一定时间来合并连续的操作,以确保只执行一次,本文为大家整理了几种防抖的实现方法,希望对大家有所帮助
    2023-09-09
  • Ajax+PHP实现的模拟进度条功能示例

    Ajax+PHP实现的模拟进度条功能示例

    这篇文章主要介绍了Ajax+PHP实现的模拟进度条功能,结合实例形式分析了php结合ajax动态读取文件实现进度条功能的相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • 使用PHP生成二维码的方法汇总

    使用PHP生成二维码的方法汇总

    PHP生成二维码最常用的有两种,1.使用google的api生成,2.使用PHP QR Code生成,两种方法生成的二维码都是很清淅的,效果不错。下面我们就来详细看看吧。
    2015-07-07
  • PHP实现的mongoDB数据库操作类完整实例

    PHP实现的mongoDB数据库操作类完整实例

    这篇文章主要介绍了PHP实现的mongoDB数据库操作类,结合完整实例形式详细分析了php基于单例模式针对mongoDB数据库连接、增删改查、统计等操作相关实现技巧,需要的朋友可以参考下
    2018-04-04
  • PHP中使用cURL实现Get和Post请求的方法

    PHP中使用cURL实现Get和Post请求的方法

    PHP中使用cURL实现Get和Post请求的方法,需要的朋友可以参考一下
    2013-03-03
  • PHP JSON 数据解析代码

    PHP JSON 数据解析代码

    PHP解析JSON 数据代码,与大多数流行的 Web 服务如 twitter 、人人网通过开放 API 来提供数据一样,它总是能够知道如何解析 API 数据的各种传送格式,包括 JSON,XML 等等。
    2010-05-05
  • php设计模式之单例、多例设计模式的应用分析

    php设计模式之单例、多例设计模式的应用分析

    本篇文章是对php设计模式中的单例与多例设计模式的应用进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php实现的RSS生成类实例

    php实现的RSS生成类实例

    这篇文章主要介绍了php实现的RSS生成类,实例分析了RSS生成类的原理、定义与使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • php使用PhpSpreadsheet导出Excel表格的实例详解

    php使用PhpSpreadsheet导出Excel表格的实例详解

    这篇文章将给大家介绍php使用PhpSpreadsheet导出Excel表格的实例,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • PHP完全二叉树定义与实现方法示例

    PHP完全二叉树定义与实现方法示例

    这篇文章主要介绍了PHP完全二叉树定义与实现方法,简单描述了完全二叉树的概念并结合实例形式给出了完全二叉树的定义、节点查找、添加、设置、打印等相关操作技巧,需要的朋友可以参考下
    2017-10-10

最新评论