加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP操作MySQL事务实例

发布时间:2020-12-13 02:07:56 所属栏目:PHP教程 来源:网络整理
导读:《:PHP操作MySQL事务实例》要点: 本文介绍了:PHP操作MySQL事务实例,希望对您有用。如果有疑问,可以联系我们。 PHP实例 本篇章节讲解PHP操作MySQL事务的办法,供大家参考研究.具体办法如下: PHP实例 一般来说,事务都应该具备ACID特征.所谓ACID是

《:PHP操作MySQL事务实例》要点:
本文介绍了:PHP操作MySQL事务实例,希望对您有用。如果有疑问,可以联系我们。

PHP实例本篇章节讲解PHP操作MySQL事务的办法,分享给大家供大家参考.具体办法如下:

PHP实例一般来说,事务都应该具备ACID特征.所谓ACID是Atomic(原子性),Consistent(一致性),Isolated(隔离性),Durable(持续性)四个词的首字母所写,下面以“银行转帐”为例来分别说明一下它们的含义:

PHP实例① 原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分.换句话说,事务是不可分割的最小单元.比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的.
② 一致性:在事务处理执行前后,数据库是一致的.也就是说,事务应该正确的转换系统状态.比如:银行转帐过程中,要么转帐金额从一个帐户转入另一个帐户,要么两个帐户都不变,没有其他的情况.
③ 隔离性:一个事务处理对另一个事务处理没有影响.就是说任何事务都不可能看到一个处在不完整状态下的事务.比如说,银行转帐过程中,在转帐事务没有提交之前,另一个转帐事务只能处于等待状态.
④ 持续性:事务处理的效果能够被永久保存下来.反过来说,事务应当能够承受所有的失败,包括服务器、进程、通信以及媒体失败等等.比如:银行转帐过程中,转帐后帐户的状态要能被保存下来.

PHP实例在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,60)";
$conn = mysql_connect('localhost','');
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);

PHP实例在这里要注意:

PHP实例MyISAM:不支持事务,用于只读程序提高性能
InnoDB:支持ACID事务、行级锁、并发
Berkeley DB:支持事务

PHP实例希望本文所述对大家的PHP+MySQL数据库程序设计有所赞助.

欢迎参与《:PHP操作MySQL事务实例》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读