阅读量:0
在 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 );
- 在 PHP 代码中,使用预处理语句执行 SQL 操作。在执行每个操作之前,将操作类型、表名、旧数据和新数据插入到
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 中记录事务日志。请注意,这个示例仅用于演示目的,实际应用中可能需要根据您的需求进行调整。