mysql_query
是 PHP 中用于执行 MySQL 查询的函数。然而,需要注意的是,mysql_query
函数已经在 PHP 7.0.0 中被废弃,并在 PHP 7.0.0 之后的版本中被移除。取而代之的是使用 mysqli
或 PDO
扩展来执行 MySQL 查询。
事务(Transaction)是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务具有以下四个特性,通常称为 ACID 特性:
BEGIN TRANSACTION
、COMMIT
和 ROLLBACK
语句来明确地定义事务的开始、结束和回滚。mysqli
)<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 开始事务
$conn->begin_transaction();
try {
// 执行 SQL 语句
$sql1 = "UPDATE accounts SET balance = balance - 100 WHERE id = 1";
$sql2 = "UPDATE accounts SET balance = balance + 100 WHERE id = 2";
if ($conn->query($sql1) === TRUE && $conn->query($sql2) === TRUE) {
// 提交事务
$conn->commit();
echo "事务提交成功";
} else {
// 回滚事务
$conn->rollback();
echo "事务回滚";
}
} catch (Exception $e) {
// 发生异常时回滚事务
$conn->rollback();
echo "事务回滚: " . $e->getMessage();
}
// 关闭连接
$conn->close();
?>
原因:
解决方法:
begin_transaction
开始事务。try-catch
块捕获异常并执行回滚操作。try {
$conn->begin_transaction();
// 执行 SQL 语句
$conn->commit();
} catch (Exception $e) {
$conn->rollback();
echo "事务回滚: " . $e->getMessage();
}
通过以上方法,可以确保事务的正确执行和回滚,从而保证数据的完整性和一致性。
领取专属 10元无门槛券
手把手带您无忧上云