
在 MySQLi 中開始和結束事務
使用 MySQL 時,了解事務如何運作至關重要。事務是一種將多個查詢分組並確保它們以原子方式執行的方式,這意味著所有查詢要么全部成功,要么全部都不成功。
啟動交易
在 MySQLi 中,交易是透過停用來啟動的使用 autocommit(FALSE) 語句的自動提交模式。自動提交是MySQL的預設行為,這意味著每個查詢都是獨立且立即執行的。透過停用自動提交,您可以啟用交易控制,從而允許您對多個查詢進行分組並將它們作為一個單元執行。
結束事務
在事務中對所需的查詢進行分組後,您必須明確結束它。有兩種方式結束事務:
-
提交:如果事務中的所有查詢都成功執行且沒有錯誤,則可以使用 commit() 方法完成事務。這會將交易期間所做的所有變更永久保存到資料庫中。
-
回滾:如果交易中的任何查詢失敗,您可以使用 rollback() 方法取消交易。這將丟棄事務期間所做的所有更改,將資料庫恢復到事務開始之前的狀態。
範例
考慮以下 PHP 程式碼片段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php
$mysqli = new mysqli( 'localhost' , 'username' , 'password' , 'database' );
$mysqli ->autocommit(FALSE);
$mysqli ->query( 'UPDATE `table` SET `column` = 1' );
$mysqli ->query( 'UPDATE `table1` SET `column1` = 2' );
if ( $allQueriesExecutedSuccessfully ) {
$mysqli ->commit();
} else {
$mysqli ->rollback();
}
?>
|
登入後複製
在此範例中,使用 autocommit(FALSE) 停用自動提交模式,啟動交易。事務內執行多個查詢。根據執行狀態,事務要麼提交,要麼回滾。
以上是如何在 MySQLi 中開始和結束事務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!