在 PHP 和 MySQL 中进行事务日志记录,可以通过以下几个步骤实现:
transaction_log
的表,包含以下字段:id
(主键,自增),transaction_id
(事务ID),action
(操作类型,如 INSERT、UPDATE、DELETE 等),table_name
(操作表名),old_data
(旧数据,适用于 UPDATE 和 DELETE 操作),new_data
(新数据,适用于 INSERT 和 UPDATE 操作),created_at
(创建时间)。CREATE TABLE transaction_log (
id INT AUTO_INCREMENT PRIMARY KEY,
transaction_id INT NOT NULL,
action VARCHAR(255) NOT NULL,
table_name VARCHAR(255) NOT NULL,
old_data TEXT,
new_data TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
transaction_log
表中。<?php
// 连接到 MySQL 数据库
$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 语句
$stmt = $conn->prepare("INSERT INTO transaction_log (transaction_id, action, table_name) VALUES (?, ?, ?)");
$stmt->bind_param("iss", $transaction_id, $action, $table_name);
$stmt->execute();
// 执行其他 SQL 操作(如 INSERT、UPDATE、DELETE 等)
// ...
// 提交事务
$conn->commit();
} catch (Exception $e) {
// 发生错误时回滚事务
$conn->rollback();
echo "Error: " . $e->getMessage();
} finally {
// 关闭预处理语句
$stmt->close();
}
// 关闭数据库连接
$conn->close();
?>
通过这种方式,您可以在 PHP 和 MySQL 中记录事务日志。请注意,这个示例仅用于演示目的,实际应用中可能需要根据您的需求进行调整。