php+mysql事务处理例子详细分析实例
一、数据引擎innodb用begin,rollback,commit来实现提交事务处理,begin开始事务后出现错误就rollback事务回滚或者没有错误就commit提事务提交确认完成。
start transaction 开始是事务begin和end之间是执行的语句块,set autocommit=0不让事务自动提交设置后要在结束set autocommit=1。
下面是针对支持事务处理的数据表引擎例子。
mysql_query("start transaction");
mysql_query("set autocommit=0");
mysql_query("begin");
$sql = "insert into student ( name,num) values ( 'test1', '0')";
$sql2 = "insert into student ( name,num) values ( null, '0')";//写错
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1){
mysql_query("commit");
echo '提交成功。<br/>';
}else{
mysql_query("rollback");
echo '数据回滚。<br/>';
}
mysql_query("set autocommit=1");
mysql_query("end");
二、对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法:
MyISAM & InnoDB 都支持,LOCK TABLES可以锁定用于当前线程的表。如果表被其它线程锁定,则造成堵塞,直到可以获取所有锁定为止。UNLOCK TABLES可以释放被当前线程保持的任何锁定。当线程发布另一个LOCK TABLES时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含地解锁。
下面例子是针对不支持事务提交而使用表锁的例子
mysql_query("lock tables student write");//锁住student表write 也可以是read
$sql = "insert into student ( name,num) values ( '三生三世', '0')";
$res = mysql_query($sql);
if($res){
echo '提交成功。!<br/>';
}else{
echo '失败!<br/>';
}
mysql_query("UNLOCK TABLES");//解除锁定
上面代码完整的实例下载地址:http://pan.baidu.com/s/1pLkbkKj
密码:bh49
php+mysql事务处理例子详细分析实例的更多相关文章
- php+mysql事务处理例子详细分析实例下载
一.数据引擎innodb用begin,rollback,commit来实现提交事务处理,begin开始事务后出现错误就rollback事务回滚或者没有错误就commit提事务提交确认完成. start ...
- Mysql 死锁的详细分析方法
用数据库的时候,偶尔会出现死锁,针对我们的业务系统,出现死锁的直接结果就是系统卡顿.客户找事儿,所以我们也在想尽全力的消除掉数据库的死锁.出现死锁的时候,如果只是想解锁,用show full proc ...
- 性能分析 | MySQL 的慢查分析实例
最近遇见一个 MySQL 的慢查问题,于是排查了下,这里把相关的过程做个总结. 定位原因 我首先查看了 MySQL 的慢查询日志,发现有这样一条 query 耗时非常长(大概在 1 秒多),而且扫描的 ...
- ZIP压缩算法详细分析及解压实例解释
最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...
- mysql事务处理用法与实例详解
来源:转载 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berke ...
- [转]mysql事务处理用法与实例详解
转自:http://www.cnblogs.com/ymy124/p/3718439.html MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于 ...
- 50道SQL练习题及答案与详细分析(MySQL)
50道SQL练习题及答案与详细分析(MySQL) 网上的经典50到SQL题,经过一阵子的半抄带做,基于个人理解使用MySQL重新完成一遍,感觉个人比较喜欢用join,联合查询较少 希望与大家一起学习研 ...
- 详细分析MySQL事务日志(redo log和undo log)
innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...
- 详细分析MySQL事务日志(redo log和undo log) 表明了为何mysql不会丢数据
innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...
随机推荐
- MQTT 3.1协议非严肃反思录
前言 MQTT 3.1协议在弱网络环境下(比如2G/3G等)表现不够好,因此才有了反思. 弱网环境下表现 手机等终端在弱网络环境下丢包情况会非常明显,连接MQTT Server成功率很低.相比单纯的请 ...
- jquery类似方法的比较(二)
(1)append()&appendTo()&prepend()$prependTo() (2)after()&before()&insertAfter()&i ...
- 转载-解决使用httpClient 4.3.x登陆 https时的证书报错问题
今天在使用httpClient4.3.6模拟登陆https网站的时候出现了证书报错的问题,这是在开源中国社区里找到的可行的答案(原文链接:http://www.oschina.net/question ...
- 【BZOJ1500】[NOI2005]维修数列 Splay
[BZOJ1500][NOI2005]维修数列 Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行 ...
- rest_framework之解析器详解 05
解析器就是服务端写api,对于前端用户发来的数据进行解析.解析完之后拿到自己能用数据. 本质就是对请求体中的数据进行解析. django的解析器 post请求过来之后,django 的request. ...
- 【node】---socket---网络通信---【巷子】
1.什么是一个socket? 网络上两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为socket 2.http与socket的区别 在以前我们实现数据交换已经有了HTTP协议,为什么还要 ...
- docker网络部分源码分析
daemon初始化network controller daemon的配置,网络部分的内容在cmd/dockerd/config_common_unix.go中指定,默认设置一般都为空 // daem ...
- Git学习-->关于Jenkins编译时候,如何获取Git分支的当前分支名?
一.背景 因为代码都迁移到了Gitlab,所以Jenkins编译的时候我们都需要将之前的SVN信息换成现在的Git信息.最近编译一个Lib库的时候,因为团队规定上传Release版本的AAR到Mave ...
- Tomcat安装(linux系统)
首先解压: 进入配置文件: 统一tomcat的编码,避免乱码的问题: 保存退出. 注意: 查看打开的端口: /etc/init.d/iptables status 开启端口: iptables -A ...
- windows 系统无法启动windows event log 服务
windows 系统无法启动windows event log 服务 关键词:无法启动系统事件日志 尝试解决步骤 [1]权限:把如图中logsfile文件等都给local service [2]把C: ...