韩顺平php mysqli事务控制(案例)

博客介绍了一段PHP程序,要将1号账号的10元钱转到2号账号。在MySQL控制台可通过事务操作完成,步骤包括开启事务、做保存点、进行操作,最后可选择回滚或提交,还提及事务具有原子性、一致性、持久性、隔离性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create table account(
id int primary key,
balance float
);

现在有一段php程序, 要完成 把 1号 10 元钱,转到 2号账号上

<?php

$mysqli= new MYSQLi("localhost","root","hsp123","test");
if(!$mysqli){
	die("连接失败".mysqli_connect_error($mysql));

}

//将提交设为false  事务一旦提交就没有机会回滚了;
$mysql->autocommint(false);
//->savepoint a 做了一个保存点,会把当前情况记录
$sql1="update account set balance=balance-2 where id=1";
$sql2="update account set balance=balance+2 where id=2";

$b1=$mysqli->query($sql1);
$b2=$mysqli->query($sql2);


if(!$b1||!$b2){
	echo "失败,回滚".$mysqli->error;
 //回滚
 $mysqli->rollback();

}else{

//提交 一旦提交就没有机会回滚了
$mysqli->commint();

}

$mysqli->close();

?>

在mysql控制台可以使用事务来操作,具体步骤如下
在mysql控制台也可以用事务操作,具体步骤如下
1.开启一个事务
start transaction
2.做保存点
savepoint a;
3.操作
4.可以回滚也可以提交
如果没有问题就提交
commit
如果你觉得没有问题,就回滚
rollback to 保存点

start transaction;
delete from user1;
select*from user1;
rollback;
select*from user1;
删除的回来了,就回滚了

start transaction;
savepoint a;
delete from user1 where id=2;
select*from user1;
savepoint b;
delete from user1 where id=3;
select*from user1;
rollback to b;
rollback to a;回到a b的保存点就被冲掉 a在b的前面
commit ;
rollback to a(不能) 一旦提交之后就不能回滚了

在这里插入图片描述
事务的几大特性
原子性,一致性,持久性,隔离性.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值