PHP操作MySQL事务实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-24 13:44:35 浏览: 评论:0
这篇文章主要介绍了PHP操作MySQL事务的方法,以实例的形式较为详细的分析了ACID特征,具有不错的参考借鉴价值,需要的朋友可以参考下。
本文实例讲述了PHP操作MySQL事务的方法,分享给大家供大家参考。具体方法如下:
一般来说,事务都应该具备ACID特征。所谓ACID是Atomic(原子性),Consistent(一致性),Isolated(隔离性),Durable(持续性)四个词的首字母所写,下面以“银行转帐”为例来分别说明一下它们的含义:
① 原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。换句话说,事务是不可分割的最小单元。比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的。
② 一致性:在事务处理执行前后,数据库是一致的。也就是说,事务应该正确的转换系统状态。比如:银行转帐过程中,要么转帐金额从一个帐户转入另一个帐户,要么两个帐户都不变,没有其他的情况。
③ 隔离性:一个事务处理对另一个事务处理没有影响。就是说任何事务都不可能看到一个处在不完整状态下的事务。比如说,银行转帐过程中,在转帐事务没有提交之前,另一个转帐事务只能处于等待状态。
④ 持续性:事务处理的效果能够被永久保存下来。反过来说,事务应当能够承受所有的失败,包括服务器、进程、通信以及媒体失败等等。比如:银行转帐过程中,转帐后帐户的状态要能被保存下来。
在PHP中,mysqli 已经很好的封装了mysql事务的相关操作。如下示例:
- $sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
- $sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'";
- $sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)";
- $mysqli = new mysqli('localhost','root','','DB_Lib2Test');
- $mysqli->autocommit(false);//开始事物
- $mysqli->query($sql1);
- $mysqli->query($sql2);
- if(!$mysqli->errno){
- $mysqli->commit();
- echo 'ok';
- }else{
- echo 'err';
- $mysqli->rollback();
- }
在这里,我们再使用 php mysql 系列函数执行事务,代码如下:
- $sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
- $sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'";
- $sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)";
- $conn = mysql_connect('localhost','root','');
- mysql_select_db('DB_Lib2Test');
- mysql_query('start transaction');
- //mysql_query('SET autocommit=0');
- mysql_query($sql1);
- mysql_query($sql2);
- if(mysql_errno ()){
- mysql_query('rollback');
- echo 'err';
- }else{
- mysql_query('commit');
- echo 'ok';
- }
- // mysql_query('SET autocommit=1');
- // mysql_query($sql3);
在这里要注意:
MyISAM:不支持事务,用于只读程序提高性能
InnoDB:支持ACID事务、行级锁、并发
Berkeley DB:支持事务
希望本文所述对大家的PHP+MySQL数据库程序设计有所帮助。
Tags: PHP操作MySQL
- 上一篇:PHP中使用虚代理实现延迟加载技术
- 下一篇:PHP队列用法实例
相关文章
- ·Php中使用PDO操作MySQL数据库(查询 更新 删除)(2014-09-10)
- ·PHP操作MySQL数据库的常用方法(2014-09-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)