php事務刪除怎麼操作

2022-11-22 10:00:43

php事務刪除的操作方法:1、利用「autocommit(false)」方法,關閉資料庫自動提交;2、當操作語句全部成功後,通過「commit()」提交到資料庫,如果操作失敗,則用「rollback()」方法回退刪除即可。

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境:Windows7系統、PHP8.1版、Dell G3電腦。

php事務刪除怎麼實現?

php 事務處理transaction

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

在MySQL中只有使用了Innodb資料庫引擎的資料庫或表才支援事務

事務處理可以用來維護資料庫的完整性,保證成批的SQL語句要麼全部執行,要麼全部不執行

事務用來管理insert,update,delete語句

一般來說,事務是必須滿足4個條件(ACID): Atomicity(原子性)、Consistency(穩定性)、Isolation(隔離性)、Durability(永續性)

1、事務的原子性:一組事務,要麼成功;要麼撤回。

2、穩定性 : 有非法資料(外來鍵約束之類),事務撤回。

3、隔離性:事務獨立執行。一個事務處理後的結果,影響了其他事務,那麼其他事務會撤回。事務的100%隔離,需要犧牲速度。

4、永續性:一個事務一旦被提交,它對資料庫中資料的改變就是永久的,接下來即使資料庫發生故障也不應該對其有任何影響。

執行下面的程式

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('資料庫連線錯誤'.$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){
    die('操作錯誤'.$mysqli->error);
}else{
    die('操作成功');
}
$mysqli->close();
登入後複製

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

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

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

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('資料庫連線錯誤'.$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){
    die('操作錯誤'.$mysqli->error);
    $mysqli->rollback();    //事務回退
}else{
    //操作全部正確後再提交
    $mysqli->commit();
}
$mysqli->close();
登入後複製

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

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

推薦學習:《》

以上就是php事務刪除怎麼操作的詳細內容,更多請關注TW511.COM其它相關文章!