>

PHP中PDO事务处理操作示例_php技巧_脚本之家,ph

- 编辑:澳门新葡亰平台游戏 -

PHP中PDO事务处理操作示例_php技巧_脚本之家,ph

本文实例分析了PHP中PDO的事务处理。分享给大家供大家参考,具体如下:

本文实例讲述了PHP中PDO事务处理操作。分享给大家供大家参考,具体如下:

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

事务处理具有四个特性:原子性、一致性、独立性、持久性。

概要:

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

并不是所有的数据库都支持事务处理的,PDO 为能够执行事务处理的数据库提供事务支持。

将多条sql操作作为一个操作单元,要么都成功,要么都失败。

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

1、关闭 PDO 的自动提交;

被操作的表必须是innoDB类型的表

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

$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, false);

MySQL常用的表类型:MyISAM增删改速度快、InnodB安全性高

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

2、开启一个事务需要的方法;

更改表的类型为innoDB类型

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

$pdo->beginTransaction(); // 开启一个事务$pdo->commit(); // 提交事务$pdo->rollback(); // 回滚事务
mysql> alter table stu engine=innodb;

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

3、一般事务处理是运行在 try...catch...语句中,当事务失败时执行 catch 代码段。

使用:

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

beginTransaction(); // 开启一个事务 $row = null; $row = $pdo->exec; // 执行第一个 SQL if  throw new PDOException; // 如出现异常提示信息或执行动作 $row = $pdo->exec; // 执行第二个 SQL if  throw new PDOException; $pdo->commit();} catch  { $pdo->rollback(); // 执行失败,事务回滚 exit;}?>

在PDO预处理的基础上添加,如下格式:

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

在事务中的 SQL 语句,如果出现错误,那么所有的 SQL 都不执行。当所有 SQL 有无误的时候,才提交执行。

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

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

示例:

补充:

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

$m = new PDO;$m->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);try{$m->beginTransaction();//开启事务处理$stmt=$m->prepare("insert into stuvalues(?,?,?,?)");$data=array(array("user1",1,22,"lamp76"),array("user2",1,20,"lamp76"),array("user3",0,22,"lamp76"));foreach{$stmt->execute;echo $m->lastInsertId;echo "提交成功!";}catch{$m->rollBack;}

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

补充:再来一个php使用PDO的mysql事务处理与回滚操作实例分析

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

概述:

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

事务是由查询和/或更新语句的序列组成。 用 begin、start transaction开始一个事务,rollback 回滚事务,commit 提交事务。 在开始一个事务后,可以有若干个 SQL 查询或更新语句,每个 SQL递交执行后,还应该有判断是否正确执行的语句,以确定下一步是否回滚,若都被正确执行则最后提交事务。事务一旦回滚,数据库则保持开始事务前状态。就好象一个被编辑的文件不存盘退出,自然还是保持文件原来的样子。所以,事务可被视为原子操作,事务中的 SQL,要么全部执行,要不一句都不执行。

相关属性:

PHP中PDO的MYSQL事务处理步骤:

① 原子性

③.有异常就自动抛出异常提示再回滚

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

注意:

② 一致性

mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持.

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

实例:

③ 隔离性

0));//这个是通过设置属性方法进行关闭自动提交和上面的功能一样//$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//开启异常处理$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);}catch{echo "数据库连接失败:".$e->getMessage();exit;}/** 事务处理** 张三从李四那里买了一台 2000 元的电脑* 从张三帐号中扣出 2000元* 向李四账号中加入 2000元* 从商品表中减少一台电脑* MyIsAM InnoDB*/try{$pdo->beginTransaction();//开启事务处理$price=500;$sql="update zhanghao set price=price-{$price} where id=1";$affected_rows=$pdo->exec;ifthrow new PDOException;//那个错误抛出异常$sql="update zhanghao set price=price+{$price} where id=3";$affected_rows=$pdo->exec;ifthrow new PDOException;echo "交易成功!";$pdo->commit();//交易成功就提交}catch{echo $e->getMessage;}//自动提交,如果最后不自动提交,转账是不成功的$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);//设置错误报告模式 ERRMODE_SILENT ERRMODE_WARNING

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

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

④ 持久性

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

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

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

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

本文由java编程发布,转载请注明来源:PHP中PDO事务处理操作示例_php技巧_脚本之家,ph