Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengurus Transaksi MySQL dengan Berkesan dalam PHP?

Bagaimana untuk Mengurus Transaksi MySQL dengan Berkesan dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-19 10:41:16131semak imbas

How to Manage MySQL Transactions Effectively in PHP?

Contoh Transaksi PHP MySQL

Transaksi dalam PHP dan MySQL membolehkan anda mengumpulkan set pertanyaan sebagai unit kerja atom tunggal. Ini bermakna jika salah satu pertanyaan gagal, semua perubahan yang dibuat oleh urus niaga akan ditarik balik.

Cara Menggunakan Transaksi

Untuk menggunakan transaksi dalam PHP dan MySQL, anda perlu:

  1. Mulakan transaksi dengan memanggil mysql_query("SET AUTOCOMMIT=0") dan mysql_query("MULAKAN TRANSAKSI").
  2. Laksanakan pertanyaan anda.
  3. Jika semua pertanyaan berjaya, lakukan transaksi dengan memanggil mysql_query("COMMIT").
  4. Jika mana-mana pertanyaan gagal, putar balik transaksi dengan membuat panggilan mysql_query("ROLLBACK").

Contoh

Berikut ialah contoh mudah cara menggunakan transaksi dalam PHP dan MySQL:

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");
}

Dalam contoh ini, pernyataan COMMIT hanya dilaksanakan jika kedua-dua $a1 dan $a2 berjaya. Jika salah satu pertanyaan gagal, pernyataan ROLLBACK akan dilaksanakan.

Menggunakan Transaksi dengan PDO

Kelas PDO menyediakan cara yang lebih moden dan berorientasikan objek untuk bekerja dengan transaksi MySQL. Untuk menggunakan transaksi dengan PDO, anda perlu:

  1. Buat objek PDO dan tetapkan atribut PDO::ATTR_ERRMODE kepada PDO::ERRMODE_EXCEPTION.
  2. Mulakan transaksi dengan memanggil $ pdo->beginTransaction().
  3. Laksanakan anda pertanyaan.
  4. Jika semua pertanyaan berjaya, lakukan transaksi dengan memanggil $pdo->commit().
  5. Jika mana-mana pertanyaan gagal, gulung semula transaksi dengan memanggil $pdo->rollback().

Contoh

Berikut ialah contoh cara menggunakan transaksi dengan PDO:

try {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->beginTransaction();

    $pdo->exec("INSERT INTO rarara (l_id) VALUES('1')");
    $pdo->exec("INSERT INTO rarara (l_id) VALUES('2')");

    $pdo->commit();
} catch (\PDOException $e) {
    $pdo->rollback();
    throw $e;
}

Dalam contoh ini, kaedah commit() hanya dipanggil jika kedua-dua pertanyaan berjaya. Jika salah satu pertanyaan gagal, kaedah rollback() dipanggil dan pengecualian akan dilemparkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengurus Transaksi MySQL dengan Berkesan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn