文档章节

php 中的 mysqli事务处理

流沙无形-上善若水
 流沙无形-上善若水
发布于 2016/02/24 10:02
字数 499
阅读 87
收藏 3
//准备的sql语句,数据user表中username是唯一索引,innodb
	$sql="INSERT INTO `user`(`username`,`password`,`name`,`age`,`price`,`time`) VALUES ('admin',md5('admin'),'Mr.Zhang',34,10,111111111)";
	$sql2="INSERT INTO `user`(`username`,`password`,`name`,`age`,`price`,`time`) VALUES ('admin',md5('admin'),'Mr.Zhang',34,10,111111111)";
	
	$mysqli=new mysqli("localhost","root","root","ci");
	$mysqli->query("set names utf8");
	
	$mysqli->autocommit(false);//关闭自动提交,同时开始事务
	
	//执行sql
	$mysqli->query($sql);
	$mysqli->query($sql2);

	if(!$mysqli->errno){
		 $mysqli->commit();//如果成功,则提交
		echo "insert  success";
	}else{
		echo "insert error code:".$mysqli->errno;
		$mysqli->rollback();//不成功,则回滚
	}
	
	$mysqli->autocommit(true);
	$mysqli->close();

一般来说,事务都具备四个特征:ACID。

    A:Atomic (原子性)组成事务处理的语句形成了一个逻辑单元,比如上面的sql 和sql2 两个语句执行是不能分割的,不能只执行sql或者sql2

    C:Consistent(一致性),在事务处理执行前后,数据库是一致的,比如银行 A账户转钱给B账户,A的钱减少那么B的钱必须增加相对于的金额,要么都不变。

    I:Isolated(隔离性),一个事务处理对另一个事务处理没有影响.比如说,银行转帐过程中,在转帐事务没有提交之前,另一个转帐事务只能处于等待状态。

    D:Durable(持续性,事务处理的效果能够被永久保存下来。反过来说,事务应当能够承受所有的失败,包括服务器、进程、通信以及媒体失败等等。比如:银行转帐过程中,转帐后帐户的状态要能被保存下来。


ps:对事务主要是理解,只有理解了才是自己的东西。

这里要注意下:MyISAM:不支持事务,用于只读程序提高性能(如果查询比较多,而没有事务最佳之选);InnoDB:支持ACID事务、行级锁、并发;Berkeley DB:支持事务。

© 著作权归作者所有

下一篇: php代码规范
流沙无形-上善若水
粉丝 3
博文 8
码字总数 6478
作品 0
长沙
程序员
私信 提问
PHP 对 mysql 的事务处理

mysql>mysql事务处理php代码实现事务的处理可以通过PHP预定义类mysqli的以下方法实现。 autocommit(boolean):该方法用于限定查询结果是否自动提交,如果该方法的参数为true则自动提交,如果...

罗春宗
2012/10/31
0
0
再谈PHP开发者常犯的10个MySQL错误

文章来源:http://www.liheran.com/?p=387 最近看到一篇文章:《PHP开发者常犯的10个MySQL错误》,发现文中不少内容陈旧,随着时间推移技术发展变化而变得不适用。为了防止误导新手,特本着与...

红薯
2012/01/18
1K
17
PHP PDOStatement对象bindpram()、bindvalue()和bindcolum

PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别 PDOStatement::bindParam ― 绑定一个参数到指定的变量名。 绑定一个PHP变量到用作预处理的SQL语句中的对应命名占位符或...

开元中国2015
2015/07/31
233
0
PHP+MySQL缓冲查询和无缓冲查询

http://php.net/manual/zh/mysqlinfo.concepts.buffering.php http://php.net/manual/zh/mysqli.query.php PHP MySQL查询(mysqli,pdo_mysql)默认使用缓冲模式. 也就是说查询结果将一次性从M......

eechen
2015/12/30
1K
1
php连接mysql数据库的几种方式(mysql、mysqli、pdo)

php连接mysql数据库的几种方式(mysql、mysqli、pdo) www.111cn.net 编辑:flyfox 来源:转载 php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,...

DanEcho
2016/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分享一波 RabbitMQ 面试题有答案

1、什么是rabbitmq 2、为什么要使用rabbitmq 3、使用rabbitmq的场景 4、如何确保消息正确地发送至RabbitMQ? 如何确保消息接收方消费了消息? 发送方确认模式 接收方确认机制 接收方消息确认...

搜云库技术团队
50分钟前
2
0
2019年JAVA面试题(高级资深)

记录下本年度最新的面试题: 2019-04-24 //某互联网公司,劳工资源管理方向职位 1.bio/nio/aio介绍下,粘包、拆包问题怎么解决? 2.数据库四个特性是什么,事务传播性是怎么样的?spring事务和...

em_aaron
53分钟前
1
0
yarn如何全局安装命令以及和环境变量的关系

npm全局安装 npm i -g xxx yarn 全局安装 yarn global add xxx 然而你可能会发现npm全局安装后的命令可以直接使用,而yarn却不行,这是为什么呢? 我们来查看下npm和yarn的bin目录 使用npm全...

单线程生物
今天
2
0
异步线程RequestContextHolder.getRequestAttributes()为null

使用Spring框架,在Service中开启一个新的线程,在新的线程中使用 RequestAttributes ra = RequestContextHolder.getRequestAttributes(); 获取出来为null,有没有什么办法能解决? 问题出现...

xiaomin0322
今天
1
0
mingw64环境搭建

mingw64环境搭建 转自:http://www.cr173.com/soft/132367.html MinGW64位版,默认编译出来是64位的,需要编译32位请使用-m32 参数!mingw是一款gnu工具集合是Minimalist GNU on Windows的简称...

shzwork
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部