PHP操作MySQL事务实例_php技巧_脚本之家

Posted by

本文实例讲述了PHP操作MySQL事务的方法,分享给大家供大家参考。具体方法如下:

一般来说,事务都应该具备ACID特征。所谓ACID是Atomic,Isolated四个词的首字母所写,下面以“银行转帐”为例来分别说明一下它们的含义:


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

在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 “;$mysqli = new
mysqli(‘localhost’,’root’,”,’DB_Lib2Test’);$mysqli->autocommit;//开始事物$mysqli->query;$mysqli->query;if{
$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 “;$conn =
mysql_connect(‘localhost’,’root’,”);mysql_select_db;mysql_query;//mysql_query;mysql_query;mysql_query;if{
mysql_query; echo ‘err’;}else{ mysql_query; echo ‘ok’;}//
mysql_query;// mysql_query;

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

希望本文所述对大家的PHP+MySQL数据库程序设计有所帮助。

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注