您好,登錄后才能下訂單哦!
在PHP中,使用MySQL事務時,如果需要回滾事務,可以通過以下方法實現:
在開始事務之前,使用mysqli_autocommit()
函數關閉自動提交模式。這樣,在執行一組SQL語句后,只有當調用mysqli_commit()
函數時,事務才會被提交。
$conn = mysqli_connect("localhost", "username", "password", "database");
// 關閉自動提交模式
mysqli_autocommit($conn, FALSE);
執行你需要執行的SQL語句,包括插入、更新和刪除等操作。
$sql1 = "INSERT INTO table1 (column1, column2) VALUES ('value1', 'value2')";
$sql2 = "UPDATE table2 SET column1 = 'value3' WHERE column2 = 1";
$sql3 = "DELETE FROM table3 WHERE column1 = 'value4'";
// 執行SQL語句
mysqli_query($conn, $sql1);
mysqli_query($conn, $sql2);
mysqli_query($conn, $sql3);
在執行完所有SQL語句后,檢查你的數據是否滿足預期。如果不滿足預期,需要執行回滾操作。
// 檢查結果
if ($result1 !== TRUE || $result2 !== TRUE || $result3 !== TRUE) {
// 回滾事務
mysqli_rollback($conn);
} else {
// 提交事務
mysqli_commit($conn);
}
最后,記得在完成事務處理后關閉數據庫連接。
mysqli_close($conn);
將以上代碼片段整合在一起,完整的示例代碼如下:
$conn = mysqli_connect("localhost", "username", "password", "database");
// 關閉自動提交模式
mysqli_autocommit($conn, FALSE);
$sql1 = "INSERT INTO table1 (column1, column2) VALUES ('value1', 'value2')";
$sql2 = "UPDATE table2 SET column1 = 'value3' WHERE column2 = 1";
$sql3 = "DELETE FROM table3 WHERE column1 = 'value4'";
// 執行SQL語句
mysqli_query($conn, $sql1);
mysqli_query($conn, $sql2);
mysqli_query($conn, $sql3);
// 檢查結果
if ($result1 !== TRUE || $result2 !== TRUE || $result3 !== TRUE) {
// 回滾事務
mysqli_rollback($conn);
} else {
// 提交事務
mysqli_commit($conn);
}
mysqli_close($conn);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。