php中mySQL事务实例_MySQL事务(PHP操作实例)

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

① 原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。换句话说,事务是不可分割的最小单元。比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的。

② 一致性:在事务处理执行前后,数据库是一致的。也就是说,事务应该正确的转换系统状态。比如:银行转帐过程中,要么转帐金额从一个帐户转入另一个帐户,要么两个帐户都不变,没有其他的情况。

③ 隔离性:一个事务处理对另一个事务处理没有影响。就是说任何事务都不可能看到一个处在不完整状态下的事务。比如说,银行转帐过程中,在转帐事务没有提交之前,另一个转帐事务只能处于等待状态。

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

在PHP中,mysqli 已经很好的封装了mysql事务的相关操作。如下示例:

注意:表类型必须为InnoDB类型 代码:

header('content-type:text/html;charset=utf8');

$mysqli = new mysqli('localhost','root','root','test');

//开始事务

$mysqli->autocommit(false);

$sql1='insert into user (name,age,class) values("test1",22,3)';//正常的

$sql2='insert into user (names,age,class) values("test2",33,4)';//故意写错的

$mysqli->query($sql1);

$mysqli->query($sql2);

if(!$mysqli->error){

$mysqli->commit();//事务提交

echo '提交数据';

}else{

echo '数据回滚';

$mysqli->rollback();//事务回滚

}

使用 php mysql 系列函数执行事务:

header('content-type:text/html;charset=utf8');

//连接数据库

$mysql=@mysql_connect('localhost','root','root');

mysql_select_db('test');

mysql_query("set names utf8");

//开启事务

mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");

$sql1='insert into user (name,age,class) values("test1",22,3)';//正常的

$sql2='insert into user (names,age,class) values("test2",33,4)';//故意写错的

$res1=mysql_query($sql1);

$res2=mysql_query($sql2);

if($res1 && $res2){

mysql_query("COMMIT");

echo '提交成功。';

}else{

mysql_query("ROLLBACK");

echo '数据回滚。';

}

mysql_query("END");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值