PDO中的事务处理
2018-06-17 19:54:00来源:未知 阅读 ()
基本原理和步骤其实都是一样的(可参看上一篇“MySQL的事务处理”),PDO中的事务处理就是调用PDO对象的三个方法:
开启事务:beginTransaction
回滚操作:rollBack
执行操作:commit
事务处理最典型的就是借还钱。下面以张三向李四还1000元为例
首先看一下数据库中各自的钱数
下面是利用PDO处理还钱事务的代码:
<?php /** * 利用PDO对象实现事物操作 */ echo "<meta charset=utf-8>"; //PDO类的实例化 // 1 设置数据源相关参数 $dbms = 'mysql'; //选择数据库类型 $host = 'localhost'; $port = '3306'; $dbname = 'test'; $charset = 'utf8'; $dsn = "$dbms:host=$host;port=$port;dbname=$dbname;charset=$charset"; // 2 设置用户名密码 $user = 'root'; $pwd = ''; // 3 实例化PDO类 $pdo = new PDO($dsn,$user,$pwd); // 4 PDO事务物操作 // 4.1 开启事务 $pdo->beginTransaction(); //设置一个变量,用来判断所有sql语句是否成功 $flag = true; // 4.2 执行事务中的一组sql语句 $sql = "update pdo set money=money+1000 where name='李四'"; $res = $pdo->exec($sql); if (!$res) { //如果sql语句执行失败,把$flag设置为false; $flag=false; } $sql = "update pdo set money=money-1000 where name='张三'"; $res = $pdo->exec($sql); if (!$res) { //如果sql语句执行失败,把$flag设置为false; $flag=false; } // 4.3 判断事务是否执行成功 if ($flag) { //所有sql语句执行成功,把sql语句提交 $pdo->commit(); echo "还钱成功!"; }else{ // 如其中一条执行失败,则回滚到事务开启之前的状态 $pdo->rollback(); echo "还钱失败!"; }
结果:
下面,我们故意把其中一个字段写错,看看事务是否正常处理,数据库中的钱数是否有变化!
// 4.2 执行事务中的一组sql语句 $sql = "update pdo set mone = money+1000 where name='李四'"; //把moeny字段错写成mone
结果:
结果是还钱失败,并且数据库中各自的钱数没有变化,说明当某一条语句未执行成功时,事务不会提交,而会回滚,把数据恢复到开始事务之前的原始状态,这也是使用事务的作用,即只有当事务中所有sql语句全部执行成功,事务才会提交,否则会回滚!
PDO中使用事务和在MySQL中使用事务原理基本一样!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 进程相关 2019-08-13
- 解决python中的Non-UTF-8 code starting with ‘\xbs4’ in 2019-07-24
- python输出九九乘法表 2019-07-24
- Django模板语言中的Filters的使用方法 2019-07-24
- Python中的int函数 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash