热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

thinkphp的事务回滚处理和原始PHP的事务回滚实例

thinkphp的事务回滚处理和原始PHP的事务回滚实例:1.要程序里面支持事务,首先连接的数据库和数据表必须支持事务mysql为例:数据库InnoDB支持transactions
1. 要程序里面支持事务,首先连接的数据库和数据表必须支持事务 mysql 为例:

数据库InnoDB支持 transactions

数据表支持事务:InnoDB 支持transaction

2. 框架thinkphp 支持事务代码

public function testrollback(){ $model1 = D('item'); $model2 = D('vote'); $model1->startTrans(); $res1 = $model1->where('id = 5')->delete(); $res2 = $model2->where('id = 2')->delete(); dump($res1); dump($res2); if($res1 && $res2){ $model1->commit(); //只有$res1 和 $res2 都执行成功是才真正执行上面的数据库操作 dump("commit"); }else{ $model1->rollback(); // 条件不满足,回滚 dump("rollback"); } dump("over"); exit; }

3. 原始PHP 代码事务实例

方法一:只支持数据库和数据表都是 innoDB 的情况

public function rollbackoriginal1(){ $conn = mysql_connect('127.0.0.1','summerzi','summerzi') or die('DB connection failed!'); mysql_select_db('summer',$conn); mysql_query('set names "GBK"'); mysql_query('BEGIN'); $sql1 = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(41,1,233);"; $sql2 = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(fdfd,2,235);"; $res1 = mysql_query($sql1); $res2 = mysql_query($sql2); dump($sql1); dump($sql2); dump($res1); dump($res2); if($res1 && $res2){ mysql_query('COMMIT'); dump('commit success!'); }else{ mysql_query('ROLLBACK'); dump('commit failed, rollback!'); } mysql_query('END'); }

方法二:(注意:对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法)

public function rollbackoriginal2(){ $conn = mysql_connect('127.0.0.1','summerzi','summerzi') or die('DB connection failed!'); mysql_select_db('summer',$conn); mysql_query('set names "GBK"'); mysql_query('SET AUTOCOMMIT=0');////设置mysql不自动提交,需自行用commit语句提交 $sql1 = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(41,1,233);"; $sql2 = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(44,2,235);"; //mysql_query("LOCK TABLES `hmbl_userdata` WRITE");//锁定表 $res1 = mysql_query($sql1); $res2 = mysql_query($sql2); dump($sql1); dump($sql2); dump($res1); dump($res2); //mysql_query("UNLOCK TABLES");//解除锁定 if($res1 && $res2){ mysql_query('COMMIT'); dump('commit success!'); }else{ mysql_query('ROLLBACK'); dump('commit failed, rollback!'); } mysql_query("SET AUTOCOMMIT=1"); mysql_query('END'); }

php + mysql 对事务的处理比较简单,涉及到业务中多个数据操作,就可以考虑用事务处理


以上就介绍了thinkphp 的事务回滚处理 和 原始PHP的事务回滚实例,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

推荐阅读
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 本文介绍如何在将数据库从服务器复制到本地时,处理因外键约束导致的数据插入失败问题。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4277。作者:Bob Lee,日期:2012年9月15日。题目描述:给定n个木棍,求可以组成的不同三角形的数量,最多15根木棍。 ... [详细]
author-avatar
手机用户2502922713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有