php如何處理mysql事務控制

2021-09-06 20:18:45 字數 1101 閱讀 8986

#鏈結資料庫

$consw = mysqli_connect("資料庫位址", "賬戶", "密碼", "資料庫名稱");

if (!$consw)

#事務開啟【事務頭】

mysqli_query($consw, "set names utf8");

mysqli_select_db($consw, '表名2');

mysqli_query($consw, "set autocommit=0"); // 設定為不自動提交,因為mysql預設立即執行

mysqli_begin_transaction($consw);

#事務操作一

$insertsql = "insert into 表名1(欄位1,欄位2) values ('值1','值2')";

$insertmember = mysqli_query($consw, $insertsql);

if (empty($insertmember))

#事務操作二

$updatesql = "update 表名2 set 欄位1='值1',欄位2='值2' where 條件1='條件值'";

$updatemember = mysqli_query($consw, $updatesql );

if (empty($updatemember))

#結束提交本次事務

mysqli_commit($consw);

mysqli_close($consw);

#返回$json = json_encode(array(

'code' => 200,

'data' => '恭喜你事務成功',

'error' => ""

));echo($json);

exit();

以上就是博主使用的事務操作**,主要是開頭的事務開始頭,中間的事務回滾**,以及最後的事務提交,如果不提交事務,之前的資料是不會產生改變,如果中間因為出問題而不事務回滾,則之前產生的資料會改變,小夥伴們可以試試。

MySQL如何處理死鎖

官方定義如下 兩個事務都持有對方需要的鎖,並且在等待對方釋放,並且雙方都不會釋放自己的鎖。這個就好比你有乙個人質,對方有乙個人質,你們倆去談判說換人。你讓對面放人,對面讓你放人。看到這裡,也許你會有這樣的疑問,事務和談判不一樣,為什麼事務不能使用完鎖之後立馬釋放呢?居然還要操作完了之後一直持有鎖?這...

mysql處理死鎖 mysql如何處理死鎖問題

mysql有兩種死鎖處理方式 1 等待,直到超時 innodb lock wait timeout 50s 2 發起死鎖檢測,主動回滾一條事務,讓其他事務繼續執行 innodb deadlock detect on 由於效能原因,一般都是使用死鎖檢測來進行處理死鎖。死鎖檢測 死鎖檢測的原理是構建乙個...

mysql如何處理外碼約束

建立測試主表.id 是主鍵.create table test main id int,value varchar 10 primary key id 建立測試子表.create table test sub id int,main id int,value varchar 10 primary k...