首頁 >後端開發 >PHP問題 >php事務刪除怎麼操作

php事務刪除怎麼操作

藏色散人
藏色散人原創
2022-11-22 09:19:291456瀏覽

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

php事務刪除怎麼操作

本教學操作環境: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影片教學

以上是php事務刪除怎麼操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn