Contoh PHP dengan Transaksi MySQL
Transaksi dalam PHP dan MySQL menyediakan cara untuk memastikan satu siri operasi pangkalan data dilaksanakan sebagai unit atom tunggal. Ini bermakna sama ada semua operasi dalam urus niaga komited kepada pangkalan data, atau tiada satu pun.
Contoh
Untuk menggunakan transaksi dalam PHP, anda boleh menggunakan kod berikut coretan:
$db->beginTransaction(); $a1 = $db->query("INSERT INTO table_name VALUES (value1)"); $a2 = $db->query("INSERT INTO table_name VALUES (value2)"); if ($a1 and $a2) { $db->commit(); } else { $db->rollback(); }
Dalam contoh ini, kami mula-mula memulakan transaksi menggunakan $db->beginTransaction(). Kemudian, kami melaksanakan dua pertanyaan $a1 dan $a2, dan menyemak sama ada kedua-dua pertanyaan berjaya. Jika kedua-dua pertanyaan berjaya, kami melakukan () transaksi, menjadikan perubahan kekal dalam pangkalan data. Jika tidak, kami rollback() transaksi, membuang sebarang perubahan yang dibuat semasa urus niaga.
Pendekatan Alternatif Menggunakan Try-Catch
Satu lagi pendekatan untuk mengendalikan transaksi ialah menggunakan blok cuba-tangkap:
try { $db->beginTransaction(); $a1 = $db->query("INSERT INTO table_name VALUES (value1)"); $a2 = $db->query("INSERT INTO table_name VALUES (value2)"); $db->commit(); } catch (\Throwable $e) { $db->rollback(); throw $e; }
Dalam pendekatan ini, kami memulakan transaksi dalam blok cuba. Jika semua pertanyaan berjaya, kami melakukan transaksi. Jika mana-mana pertanyaan gagal, kami melancarkan transaksi menggunakan $db->rollback() dan membuang semula pengecualian untuk pengendalian.
Transaksi Automatik
PHP tidak menyediakan cara untuk mengendalikan transaksi secara automatik untuk semua pertanyaan. Anda mesti menyatakan dengan jelas pertanyaan mana yang harus disertakan dalam transaksi menggunakan kaedah beginTransaction() dan commit() atau rollback().
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Integriti Data dengan Transaksi PHP dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!