在 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 中記錄事務日志。請注意,這個示例僅用于演示目的,實際應用中可能需要根據您的需求進行調整。