入门PHP就来我这(高级)20 ~ 事务处理

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享

路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。


 接着上篇我们来看下PDO数据库的事务处理。

1 PDO中的事务处理

1.1 事务相关概念

事务(transaction)是由查询和更新语句的序列组成。用begin、start_transaction开始一个事务,rollback回滚事务,commit提交事务。在开始一个事务后,可以有若干个SQL查询或更新语句,每个SQL递交执行后,还应该有判断是否正确执行的语句,以确定下一步是否回滚,若都被正确执行则最后提交事务。事务一旦回滚,数据库则保持开始事务前的状态。所以事务可被称为原子操作,事务中的SQL要么全部执行,要么一句也不执行。可以理解为:一荣俱荣一损俱损

PDO中实现事务处理的方法如下:

  • 开启事务:beginTransaction()方法,该方法将关闭自动提交模式(autocommit),直到事务提交或者回滚后才恢复。
  • 提交事务:commit()方法,该方法完成事务的提交操作,成功则返回true,失败则返回false。
  • 事务回滚:rollback()方法,该方法执行事务的回滚操作。 
1.2 事务案例

现有一个问答网站,路飞提出一个问题需要花费10个积分,娜美回答路飞一个问题,且被路飞采纳,则娜美活得10个积分,且两个事件应该同时完成。任何一个事件出错,则回滚到最初的状态。

创建数据库:

 

CREATE TABLE `member` (`id` INT ( 8 ) NOT NULL AUTO_INCREMENT,`nickname` VARCHAR ( 200 ) NOT NULL,`email` VARCHAR ( 200 ) DEFAULT NULL,`phone` VARCHAR ( 11 ) DEFAULT NULL,`level` CHAR ( 10 ) DEFAULT NULL,`credits` INT ( 10 ) NOT NULL DEFAULT '100' COMMENT '积分',
PRIMARY KEY ( `id` ) 
) ENGINE = MyISAM AUTO_INCREMENT = 5 DEFAULT CHARSET = utf8;

创建index.php文件

开启事务,执行事务,如果执行成功提示“操作成功”,否则回滚到初始状态。index.php文件具体代码如下:


<?phprequire "config.php";try{//实例化PDO对象,采用new的方式$pdo = new PDO(DB_DSN,DB_USER,DB_PWD);//关闭自动提交$options = array(PDO::ATTR_AUTOCOMMIT,0);//开启事务$pdo->beginTransaction();$sql='update member set credits = credits-10 where nickname="路飞"';$result1=$pdo->exec($sql);if($result1==0){throw new PDOException("路飞扣除积分失败");}$result2=$pdo->exec('update member set credits=credits+10 where nickname="娜美"');if($result2==0){throw new PDOException("娜美获取积分失败");}//提交事务$pdo->commit();echo "采纳成功!";} catch (PDOException $e) {echo 'sql语句异常:'.$sql."<br>";echo "Error:".$e->getMessahe()."<br>";}?>

执行成功后:

 下一篇 cookie与session

大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。
另外,自己创建的一个技术qq群,玩转技术群,该群里功能:分享技能,电子书,源代码,以及兼职项目等交流,欢迎大家加入一起交流。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3226301.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

仕考网:公务员考试面试时间一般多长?

公务员考试主要分为笔试与面试两个阶段&#xff0c;其中面试是笔试通过的下一关&#xff0c;面试的具体安排通常由相关考试机构或招录单位负责发布并通知考生。 公务员面试的持续时间一般在30分钟至1小时之间&#xff0c;具体时长可能因地区和招录单位的不同而有所变化。常见的…

qq通讯录如何关闭?一键操作,让通讯录的人看不到我

在当今社交网络盛行的时代&#xff0c;qq通讯录是我们与朋友、家人和同事保持联系的重要工具之一。然而&#xff0c;有时我们可能希望保持一些隐私&#xff0c;不希望所有人都能看到我们的动态或在线状态。针对这种情况&#xff0c;QQ提供了关闭通讯录的功能&#xff0c;使得我…

科普文:从Redis1.0到Redis7.0的发展历程来理解为什么Redis钟爱单线程

概叙 Redis 作为一款流行的开源数据库&#xff0c;每个版本都在不断的迭代和升级&#xff0c;新增了丰富的特性和功能&#xff0c;解决了更多实际应用场景中的问题&#xff0c;提高了 Redis 的性能和可靠性。 总体来说&#xff0c;Redis 的演化之路可以分为以下几个阶段&#x…

51单片机嵌入式开发:7、 STC89C52RC 外部中断INT0和INT1 操作

STC89C52RC 外部中断INT0和INT1 操作 1 外部中断1.1 外部中断1.2 中断介绍 2 STC89C52外部中断2.1 外部中断引脚2.2 外部中断寄存器说明 3 STC89C52外部中断演示3.1 电平触发外部中断3.2 边沿触发外部中断3.3 Protues仿真 4 外部中断总结 1 外部中断 1.1 外部中断 单片机外部…

抖音本地生活服务商怎么申请?附详细教程!

随着本地生活的发展潜力和行业前景的不断展现&#xff0c;本地生活服务商也逐渐成为了一大热门职业。在此背景下&#xff0c;作为拥有约8亿日活用户的抖音成为了人们选择平台时的优先考虑对象&#xff0c;而以抖音本地生活服务商怎么申请为代表的相关问题也因此在多个创业者群中…

点线面推进未来智造

如今&#xff0c;宁波拥有门类齐全的制造业体系&#xff0c;形成了以石油化工、汽车及零部件、电工电器、纺织服装等为支柱的产业集群。 宁波工业的发展并非一蹴而就&#xff0c;蓝卓总经理谭彰详细解读了宁波制造业的发展历程与当下目标&#xff0c;从工业小市到工业大市、工业…

微软发布Win11 21H2七月更新补丁KB5040431,快来体验!

系统之家于7月10日发出最新报道&#xff0c;微软为Win11 21H2用户发布了七月的安全更新补丁KB5040431。用户升级系统后&#xff0c;会发现版本号升至22000.3079。此次更新针对远程桌面MultiPoint Server在争用条件会导致服务停止响应等多个问题进行修复。接下来跟随小编看看此次…

VirtualBox NAT网络模式

设置网络模式 右键网络设置 查看此时IP SSH连接 端口转发设置 ssh连接 samba文件共享 虚拟机上samba服务启动运行了&#xff0c;但由于windows无法连接虚拟机IP&#xff0c;即samba访问的入口堵了&#xff0c;无法像访问本地磁盘一样通过samba通道访问虚拟机 替代方案——多…

BGOV 2024强势回归:汇聚百位嘉宾,共创科技商贸新篇章

本周四至五BGOV强势回归&#xff0c;汇聚过百位来自知名机构和龙头企业的重量级演讲嘉宾&#xff0c;举行逾80场紧贴创科和商贸发展趋势的会议&#xff1b;一连两天的展览会涵盖多项热门主题科技&#xff0c;为各行各业提供数码转型的最佳方案和成功案例&#xff0c;助企业建设…

Web3知识图谱,一篇读完

这张图展示了区块链生态系统的架构和主要组件。以下是对图中内容的概括总结&#xff1a; 基础层&#xff1a; 底层基础设施&#xff1a;包括光纤网络、P2P网络、非对称加密、哈希算法、默克尔树和随机数生成。共识机制&#xff1a; PoW&#xff08;工作量证明&#xff09;: 比特…

数据结构模板2

Trie树&#xff1a;用来高效存储和查找字符串集合的数据结构&#xff1a; 模板题&#xff1a;https://www.acwing.com/problem/content/837/ AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int son[100010][26],cnt[100010],idx; char str[100010]; …

微信文件太大传不了?学会这些,微信秒变大文件传输神器

在数字化时代&#xff0c;微信已成为我们日常沟通的重要桥梁。然而&#xff0c;当需要在微信上传输大文件时&#xff0c;文件大小的限制往往让人束手无策。 今天&#xff0c;我们将分享一些实用的技巧&#xff0c;帮助你在微信上轻松传输大文件&#xff0c;无论是工作文档还是…

02 源码编译构建LAMP

目录 2.1Apache 网站服务基础 2.1.1Apache 简介 1. Apache 的起源 2. Apache的主要特点 2.1.2安装httpd服务器 1. 准备工作 2.源码编译及安装 (1)解包 (2)配置 (3)编译及安装 3.确认安装结果 4.优化执行路径 5. 添加 httpd 系统服务 2.2 httpd服务器的基本配置 …

网站地址显示不安全怎么办

当网址栏显示不安全时&#xff0c;通常是因为网站使用的是HTTP而不是HTTPS协议&#xff0c;或者因为网站的SSL证书存在问题。以下是一些解决方法&#xff1a;1、迁移到HTTPS&#xff1a;如果您是网站所有者&#xff0c;最好的解决方法是将网站迁移到HTTPS。HTTPS通过使用SSL/TL…

docker 开启端口 2375 供外部程序访问 (不推荐,容易被黑客利用)

重点 : 写在最前面,该方法有漏洞,容易被黑客远程放入挖矿机镜像,开启需做好防范 推荐使用 CA加密端口 或者 使用 SSH 转发端口 docker服务文件位置 /usr/lib/systemd/system/docker.service 编辑 docker.service 找到Service标签下的ExecStart属性 ExecStart/usr/bin/dock…

【Hec-HMS】第一期:模型简介及软件安装

HEC-HMS模型简介及软件安装 HEC-HMS模型简介建模思路 HEC-HMS软件安装步骤1&#xff1a;安装InstallShield Wizard步骤2&#xff1a;安装HEC-HMS 参考 HEC-HMS模型简介 HEC-HMS(The Hydrologic Engineering Center’s-Hydrologic Modelimng System)&#xff0c;美国陆军工程兵…

arm环境安装达梦数据库

作者&#xff1a;振鹭 一、安装前准备 1、创建用户和用户组 groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba2、修改文件打开最大数 vi /etc/security/limits.conf #文件末尾添加以下四行 dmdba hard nofile 65536 dmdba soft nofile 65536 d…

简易限流实现

需求描述 写一个1秒两个的限流工具类&#xff0c;2r/s 使用semaphore 代码实现-类似令牌桶算法 public class LimitHelper {private int maxLimit;private Semaphore semaphore;private int timeoutSeconds;public LimitHelper(int maxLimit, int timeoutSeconds) {this.max…

UE4 解决创建布料报错:三角形退化

**【问题】**创建创建布料时报错&#xff1a;三角形退化 【方法】 1.要重新绑定&#xff1a;导入到ue4为静态网格体&#xff0c;勾选“移除退化”&#xff0c;再导出fbx&#xff0c;再重新绑定 2.不用重新绑定&#xff1a;使用排除法&#xff08;费时&#xff09;&#xff0c…

Web 自动化测试主流框架都有哪些?

Web移动端自动化测试成为了现代软件开发流程中的重要环节&#xff0c;因此&#xff0c;很多主流框架被开发出来来帮助开发人员提高测试效率。本篇文章将从零到一详细介绍Web移动端自动化测试的主流框架。 一、Web移动端自动化测试框架简介 Web移动端自动化测试框架是一种开发工…