在 PHP 中,要捕獲事務(wù)處理過程中的異常,可以使用 try
和 catch
語句塊。下面是一個簡單的示例:
<?php
// 連接數(shù)據(jù)庫
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname);
// 檢查連接
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
// 開始事務(wù)處理
$conn->begin_transaction();
try {
// 執(zhí)行 SQL 語句
$sql1 = "INSERT INTO table1 (column1, column2) VALUES ('value1', 'value2')";
$sql2 = "UPDATE table2 SET column1 = 'value3' WHERE column2 = 'value4'";
if (!$conn->query($sql1) || !$conn->query($sql2)) {
// 如果有錯誤發(fā)生,拋出異常
throw new Exception("事務(wù)處理失敗: " . $conn->error);
}
// 提交事務(wù)處理
$conn->commit();
echo "事務(wù)處理成功";
} catch (Exception $e) {
// 如果捕獲到異常,回滾事務(wù)處理
$conn->rollback();
echo "事務(wù)處理失敗: " . $e->getMessage();
} finally {
// 關(guān)閉數(shù)據(jù)庫連接
$conn->close();
}
?>
在這個示例中,我們首先連接到數(shù)據(jù)庫,然后開始一個事務(wù)處理。在 try
語句塊中,我們執(zhí)行兩個 SQL 語句。如果其中一個語句執(zhí)行失敗,我們拋出一個異常。在 catch
語句塊中,我們捕獲異常并回滾事務(wù)處理。無論事務(wù)處理成功還是失敗,最后我們都會關(guān)閉數(shù)據(jù)庫連接。