Cara memadamkan transaksi PHP: 1. Gunakan kaedah "autocommit(false)" untuk mematikan penyerahan automatik pangkalan data 2. Apabila semua pernyataan operasi berjaya, serahkan kepada pangkalan data melalui "commit(); ". Jika operasi Jika gagal, gunakan kaedah "rollback()" untuk melancarkan semula pemadaman.
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.
Bagaimana untuk memadamkan transaksi PHP?
urus niaga pemprosesan transaksi php
Transaksi MySQL digunakan terutamanya untuk memproses data dengan operasi yang besar dan kerumitan yang tinggi. Sebagai contoh, dalam sistem pengurusan kakitangan, jika anda memadam seseorang, anda perlu memadam maklumat asas orang itu, dan juga memadam maklumat yang berkaitan dengan orang itu, seperti peti mel, artikel, dll. Dengan cara ini, pangkalan data ini penyata operasi membentuk urus niaga.
Dalam MySQL, hanya pangkalan data atau jadual yang menggunakan enjin pangkalan data Innodb menyokong transaksi
Pemprosesan transaksi boleh digunakan untuk mengekalkan integriti pangkalan data dan memastikan kumpulan pernyataan SQL sama ada dilaksanakan atau Jangan laksanakan semua
Urus niaga digunakan untuk mengurus sisipan, kemas kini, memadam penyata
Secara umumnya, urus niaga mesti memenuhi 4 syarat (ACID): Atomicity (atomicity), Consistency (stability) ), Pengasingan, Ketahanan
1. Atomiti transaksi: satu set transaksi sama ada berjaya atau ditarik balik.
2. Kestabilan: Jika terdapat data yang menyalahi undang-undang (kekangan kunci asing dan seumpamanya), transaksi akan ditarik balik.
3. Pengasingan: urus niaga berjalan secara bebas. Jika hasil daripada satu transaksi menjejaskan transaksi lain, transaksi lain akan ditarik balik. 100% pengasingan transaksi memerlukan pengorbanan kelajuan.
4 Ketahanan: Setelah transaksi dilakukan, perubahannya kepada data dalam pangkalan data adalah kekal Walaupun pangkalan data gagal, ia tidak sepatutnya memberi kesan.
Jalankan program berikut
$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();
Walaupun kod di atas melaporkan ralat, dalam pangkalan data, baki dengan id=1 telah ditukar; masalah ;
Kami mahu menukar pada masa yang sama Jika satu ralat berlaku, ia tidak akan berubah pada masa ini, kami memerlukan "kawalan transaksi" untuk memastikan "konsistensi";
<. 🎜>
Kaedah yang kita perlukan untuk menggunakan autocommit() commit(); lihat kod di bawah$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();
Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk memadam transaksi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!