thinkphp的事务回滚处理和原始PHP的事务回滚实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了thinkphp的事务回滚处理和原始PHP的事务回滚实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2346字,纯文字阅读大概需要4分钟。
内容图文
![thinkphp的事务回滚处理和原始PHP的事务回滚实例](/upload/InfoBanner/zyjiaocheng/154/8d579ee0a86b4de29b827d03cba03b55.jpg)
数据库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教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的thinkphp的事务回滚处理和原始PHP的事务回滚实例全部内容,希望文章能够帮你解决thinkphp的事务回滚处理和原始PHP的事务回滚实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。