mysql事务大概描述:
1:练习操作
在mysql建名为db_school数据库(InnoDB 类型),和account 表里面字段有
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2021/4/28 0028
* Time: 11:01
*/
$link = new mysqli('127.0.0.1', 'root', 'root', 'db_school'); // 连接数据库
if(mysqli_connect_errno()){ // 检查连接错误
printf("连接失败:%s<br>", mysqli_connect_error());
exit();
}
$link->autocommit(0); // 开始事务
$success = true; // 设置事务状态
$price = 999; // 转账金额
$sql1 = "UPDATE account SET cash=cash-$price WHERE cash >= $price and name='userA'"; // 从 userA 账户转出的 SQL 语句
$result = $link -> query($sql1);
// 执行SQL语句
if(!$result || $link->affected_rows != 1){ // 如果执行失败则修改事务状态
$success = false;
}
$sql2 = "UPDATE account SET cash=cash+$price WHERE name='userB'"; // 向 userB 账户中转入的 SQL 语句
$res = $link -> query($sql2); // 执行SQL语句
// $sql3 = "insert into account (name,cash) value ('userC',0)";
// $link -> query($sql3);
if(!$res || $link->affected_rows != 1){ // 如果执行失败则修改事务状态
$success = false;
}
if($success){ // 根据事务状态选择提交或者回滚事务
$link->commit();
echo '转账成功!';
}else{
$link->rollback();
echo '转账失败!';
}
$link->close();