Transaksi PHP MySQL: Panduan Terperinci
Bagi kebanyakan pembangun, mencari contoh mudah transaksi PHP yang melibatkan MySQL boleh menjadi sukar. Artikel ini bertujuan untuk bukan sahaja memberikan ilustrasi ringkas tetapi juga menjelaskan salah tanggapan umum tentang automasi transaksi dalam PHP.
Contoh Transaksi PHP Mudah
Pertimbangkan coretan kod berikut :
mysql_query("SET AUTOCOMMIT=0"); mysql_query("START TRANSACTION"); $a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')"); $a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')"); if ($a1 and $a2) { mysql_query("COMMIT"); } else { mysql_query("ROLLBACK"); }
Walaupun kod ini menunjukkan transaksi MySQL dengan tepat, aplikasi urus niaga dunia sebenar secara amnya mengikuti corak yang berbeza:
try { // Start a transaction $db->beginTransaction(); // Execute queries $db->query('first query'); $db->query('second query'); $db->query('third query'); // If all queries succeed, commit the transaction $db->commit(); } catch (\Throwable $e) { // If any query fails, rollback the transaction and throw an exception $db->rollback(); throw $e; }
Perhatikan bahawa dalam contoh ini, urus niaga disertakan dalam blok cuba-tangkap. Ini membolehkan kami mengendalikan sebarang pengecualian yang mungkin timbul semasa pelaksanaan pertanyaan. Adalah penting untuk diingat bahawa pengecualian harus dilemparkan apabila pertanyaan gagal memastikan pemulangan transaksi yang betul.
Bolehkah Transaksi Diautomatikkan dalam PHP?
Malangnya, tiada cara automatik untuk melaksanakan transaksi dalam PHP. Walaupun kepercayaan popular, tidak ada silap mata yang boleh mengautomasikan proses. Setiap urus niaga mesti ditakrifkan dan dikendalikan secara eksplisit dalam kod.
Ringkasnya, urus niaga memerlukan pembangun untuk menyatakan dengan tepat kumpulan pertanyaan yang harus dianggap sebagai transaksi. Ini menghalang rollback yang tidak perlu atau melakukan operasi pada pertanyaan yang bukan sebahagian daripada transaksi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksana dan Mengurus Transaksi MySQL dengan Berkesan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!