php 事務處理transaction

2022-04-12 14:07:09 字數 1522 閱讀 6448

mysql 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除乙個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成乙個事務!

一般來說,事務是必須滿足4個條件(acid): atomicity(原子性)、consistency(穩定性)、isolation(隔離性)、durability(永續性)

執行下面的程式

$mysqli = new mysqli('

localhost

','root

','mayi1991

','mysqldemo');

if($mysqli->connect_error)

$sql1 = "

update account set balance = balance - 2 where id = 1";

//這裡故意寫錯指令中的balance1屬性

$sql2 = "

update account set balance1 = balance + 2 where id = 2

";

$result1 = $mysqli->query($sql1);

$result2 = $mysqli->query($sql2);

if(!$result1 || !$result2)

else

$mysqli->close();

雖然上面的**有報錯,但是在資料庫中,id=1的balance已經改變;這樣就會出現問題;

我們要的同時改變,如果有乙個出錯,就不改變;這個時候,我們就需要「事務控制」來保證「一致性」;

我們需要用到的方法autocommit()  commit();看下面的**

$mysqli = new mysqli('

localhost

','root

','mayi1991

','mysqldemo');

if($mysqli->connect_error)

//關閉資料庫自動提交

$mysqli->autocommit(false

);$sql1 = "

update account set balance = balance - 2 where id = 1";

//這裡故意寫錯屬性balance1

$sql2 = "

update account set balance1 = balance + 2 where id = 2";

$result1 = $mysqli->query($sql1);

$result2 = $mysqli->query($sql2);

if(!$result1 || !$result2)else

$mysqli->close();

首先利用autocommit(false)方法,關閉資料庫自動提交,然後當操作語句全部成功後,commit()提交到資料庫;

如果操作失敗,我們用rollback()方法回退。

PHP 事務處理

在對資料庫會進行多次操作的時候會使用到事務 transaction 其中的底層邏輯如下 1 開啟事務 begin 2 取消資料庫自動寫入 set autocommit 0 3 sql1賦值 第一句所要執行的內容 4 sql2賦值 等等 5 執行mysql query sql1 sqln 6 判斷sq...

php 事務處理transaction

mysql 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除乙個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成乙個事務!一般來說,事務是必須滿足4個條件 acid atomicity 原子性 consisten...

PHP與MYSQL事務處理

mysql的事務處理主要有兩種方法。1 用begin,rollback,commit來實現 begin 開始乙個事務 rollback 事務回滾 commit 事務確認 2 直接用set來改變mysql的自動提交模式 mysql預設是自動提交的,也就是你提交乙個query,它就直接執行!我們可以通過...