Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menyelesaikan masalah yang php tidak boleh memanggil komit

Bagaimana untuk menyelesaikan masalah yang php tidak boleh memanggil komit

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2023-06-19 10:53:08
asal
1844 orang telah melayarinya

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.

Bagaimana untuk menyelesaikan masalah yang php tidak boleh memanggil komit

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();
```
Salin selepas log masuk

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(&#39;mysql:host=localhost;dbname=test&#39;, &#39;username&#39;, &#39;password&#39;);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->beginTransaction();
    $sth = $dbh->prepare(&#39;UPDATE users SET email = :email WHERE id = :id&#39;);
    $sth->bindParam(&#39;:id&#39;, $id);
    $sth->bindParam(&#39;:email&#39;, $email);
    $id = 1;
    $email = &#39;test@example.com&#39;;
    $sth->execute();
    $id = 2;
    $email = &#39;test2@example.com&#39;;
    $sth->execute();
    $dbh->commit();
} catch (PDOException $e) {
    $dbh->rollback();
    echo &#39;Error: &#39; . $e->getMessage();
}
```
Salin selepas log masuk

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!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan