beginTransaction();}", "$pdo->commit();" dibuka seperti biasa; Semak sama ada jadual pangkalan data wujud Atau masalah sambungan 3. Gunakan enjin storan yang menyokong transaksi Dalam MySQL, hanya enjin storan InnoDB dan NDB yang menyokong transaksi."/> beginTransaction();}", "$pdo->commit();" dibuka seperti biasa; Semak sama ada jadual pangkalan data wujud Atau masalah sambungan 3. Gunakan enjin storan yang menyokong transaksi Dalam MySQL, hanya enjin storan InnoDB dan NDB yang menyokong transaksi.">
Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menyelesaikan masalah yang php tidak boleh memanggil komit
Penyelesaian apabila PHP tidak boleh memanggil komit ialah: 1. Pastikan transaksi PDO "cuba {$pdo->beginTransaction();}", "$pdo->commit();" biasanya dibuka ; 2. Periksa sama ada terdapat jadual pangkalan data atau masalah sambungan 3. Gunakan enjin storan yang menyokong transaksi Dalam MySQL, hanya enjin storan InnoDB dan NDB.
Sistem pengendalian untuk tutorial ini: Sistem Windows 10, versi php8.1.3, komputer Dell G3.
Panggilan `commit()` apabila menggunakan PHP tidak boleh berkuat kuasa, biasanya kerana mekanisme pengurusan transaksi tidak digunakan dengan betul.
Penyelesaian:
1. Pastikan anda telah membuka transaksi PDO.
``` try { $pdo->beginTransaction(); // your database operations } catch (PDOException $e) { $pdo->rollback(); throw $e; } $pdo->commit(); ```
2. Semak sama ada terdapat jadual pangkalan data atau isu sambungan
3. Dalam MySQL, hanya enjin storan InnoDB dan NDB menyokong transaksi.
Impak:
Jika panggilan ke `commit()` tidak sah, ia akan menghalang transaksi daripada melakukan, yang bermaksud bahawa semua perubahan pada pangkalan data akan ditarik balik, mengakibatkan hasil yang salah. Pada masa yang sama, anda tidak boleh menjamin ketekalan data dan kehilangan faedah yang disediakan oleh tahap pengasingan transaksi.
Kod sampel:
Kod sampel berikut menunjukkan cara mendayakan transaksi PDO dengan betul dan melakukan perubahan menggunakan `commit()`:
``` <?php try { $dbh = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->beginTransaction(); $sth = $dbh->prepare('UPDATE users SET email = :email WHERE id = :id'); $sth->bindParam(':id', $id); $sth->bindParam(':email', $email); $id = 1; $email = 'test@example.com'; $sth->execute(); $id = 2; $email = 'test2@example.com'; $sth->execute(); $dbh->commit(); } catch (PDOException $e) { $dbh->rollback(); echo 'Error: ' . $e->getMessage(); } ```
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah yang php tidak boleh memanggil komit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!