thinkphp 的事务回滚处理 和 原始PHP的事务回滚实例,thinkphp实例
1. 要程序里面支持事务,首先连接的数据库和数据表必须支持事务 mysql 为例:
数据库InnoDB支持 transactions
数据表支持事务:InnoDB 支持transaction
2. 框架thinkphp 支持事务代码
<span>public</span> <span>function</span><span> testrollback(){ </span><span>$model1</span> = D('item'<span>); </span><span>$model2</span> = D('vote'<span>); </span><span>$model1</span>-><span>startTrans(); </span><span>$res1</span> = <span>$model1</span>->where('id = 5')-><span>delete(); </span><span>$res2</span> = <span>$model2</span>->where('id = 2')-><span>delete(); dump(</span><span>$res1</span><span>); dump(</span><span>$res2</span><span>); </span><span>if</span>(<span>$res1</span> && <span>$res2</span><span>){ </span><span>$model1</span>->commit(); <span>//</span><span>只有$res1 和 $res2 都执行成功是才真正执行上面的数据库操作</span> dump("commit"<span>); }</span><span>else</span><span>{ </span><span>$model1</span>->rollback(); <span>//</span><span> 条件不满足,回滚</span> dump("rollback"<span>); } dump(</span>"over"<span>); </span><span>exit</span><span>; }</span>
3. 原始PHP 代码事务实例
方法一:只支持数据库和数据表都是 innoDB 的情况
<span>public</span> <span>function</span><span> rollbackoriginal1(){ </span><span>$conn</span> = <span>mysql_connect</span>('127.0.0.1','summerzi','summerzi') or <span>die</span>('DB connection failed!'<span>); </span><span>mysql_select_db</span>('summer',<span>$conn</span><span>); </span><span>mysql_query</span>('set names "GBK"'<span>); </span><span>mysql_query</span>('BEGIN'<span>); </span><span>$sql1</span> = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(41,1,233);"<span>; </span><span>$sql2</span> = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(fdfd,2,235);"<span>; </span><span>$res1</span> = <span>mysql_query</span>(<span>$sql1</span><span>); </span><span>$res2</span> = <span>mysql_query</span>(<span>$sql2</span><span>); dump(</span><span>$sql1</span><span>); dump(</span><span>$sql2</span><span>); dump(</span><span>$res1</span><span>); dump(</span><span>$res2</span><span>); </span><span>if</span>(<span>$res1</span> && <span>$res2</span><span>){ </span><span>mysql_query</span>('COMMIT'<span>); dump(</span>'commit success!'<span>); }</span><span>else</span><span>{ </span><span>mysql_query</span>('ROLLBACK'<span>); dump(</span>'commit failed, rollback!'<span>); } </span><span>mysql_query</span>('END'<span>); }</span>
方法二:(注意:对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法)
<span>public</span> <span>function</span><span> rollbackoriginal2(){ </span><span>$conn</span> = <span>mysql_connect</span>('127.0.0.1','summerzi','summerzi') or <span>die</span>('DB connection failed!'<span>); </span><span>mysql_select_db</span>('summer',<span>$conn</span><span>); </span><span>mysql_query</span>('set names "GBK"'<span>); </span><span>mysql_query</span>('SET AUTOCOMMIT=0');<span>//</span><span>//设置mysql不自动提交,需自行用commit语句提交</span> <span>$sql1</span> = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(41,1,233);"<span>; </span><span>$sql2</span> = "INSERT INTO `summer_userdata`(`uid`,`type`,`target_id`) VALUES(44,2,235);"<span>; </span><span>//</span><span>mysql_query("LOCK TABLES `hmbl_userdata` WRITE");//锁定表</span> <span>$res1</span> = <span>mysql_query</span>(<span>$sql1</span><span>); </span><span>$res2</span> = <span>mysql_query</span>(<span>$sql2</span><span>); dump(</span><span>$sql1</span><span>); dump(</span><span>$sql2</span><span>); dump(</span><span>$res1</span><span>); dump(</span><span>$res2</span><span>); </span><span>//</span><span>mysql_query("UNLOCK TABLES");//解除锁定</span> <span>if</span>(<span>$res1</span> && <span>$res2</span><span>){ </span><span>mysql_query</span>('COMMIT'<span>); dump(</span>'commit success!'<span>); }</span><span>else</span><span>{ </span><span>mysql_query</span>('ROLLBACK'<span>); dump(</span>'commit failed, rollback!'<span>); } </span><span>mysql_query</span>("SET AUTOCOMMIT=1"<span>); </span><span>mysql_query</span>('END'<span>); }</span>
php + mysql 对事务的处理比较简单,涉及到业务中多个数据操作,就可以考虑用事务处理

thinkphp是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了关于使用think-queue来实现普通队列和延迟队列的相关内容,think-queue是thinkphp官方提供的一个消息队列服务,下面一起来看一下,希望对大家有帮助。

thinkphp基于的mvc分别是指:1、m是model的缩写,表示模型,用于数据处理;2、v是view的缩写,表示视图,由View类和模板文件组成;3、c是controller的缩写,表示控制器,用于逻辑处理。mvc设计模式是一种编程思想,是一种将应用程序的逻辑层和表现层进行分离的方法。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了使用jwt认证的问题,下面一起来看一下,希望对大家有帮助。

thinkphp扩展有:1、think-migration,是一种数据库迁移工具;2、think-orm,是一种ORM类库扩展;3、think-oracle,是一种Oracle驱动扩展;4、think-mongo,一种MongoDb扩展;5、think-soar,一种SQL语句优化扩展;6、porter,一种数据库管理工具;7、tp-jwt-auth,一个jwt身份验证扩展包。

thinkphp查询库是否存在的方法:1、打开相应的tp文件;2、通过“ $isTable=db()->query('SHOW TABLES LIKE '."'".$data['table_name']."'");if($isTable){...}else{...}”方式验证表是否存在即可。

本篇文章给大家带来了关于ThinkPHP的相关知识,其中主要整理了使用think-queue实现redis消息队列的相关问题,下面一起来看一下,希望对大家有帮助。

在thinkphp3.2中,可以利用define关闭调试模式,该标签用于变量和常量的定义,将入口文件中定义调试模式设为FALSE即可,语法为“define('APP_DEBUG', false);”;开启调试模式将参数值设置为true即可。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)