Jadual Kandungan
Transaksi Codeigniter
Penerangan Isu
Kemasukan Fungsi Luaran
Sampel Kod dengan Pelaksanaan Berasaskan Model
Pertimbangan Utama
Kemas Kini Codeigniter 4
Rumah pangkalan data tutorial mysql Mengapakah ralat dalam fungsi luaran dalam transaksi Codeigniter tidak mencetuskan pemulangan semula?

Mengapakah ralat dalam fungsi luaran dalam transaksi Codeigniter tidak mencetuskan pemulangan semula?

Nov 03, 2024 am 04:53 AM

Why do errors in external functions within Codeigniter transactions not trigger a rollback?

Transaksi Codeigniter

Codeigniter menyediakan mekanisme yang lancar untuk mengendalikan transaksi pangkalan data melalui fungsi terbina dalamnya. Ini membolehkan pembangun melaksanakan berbilang operasi pangkalan data sebagai unit kerja atom tunggal.

Penerangan Isu

Walau bagaimanapun, apabila menggunakan transaksi dalam Codeigniter, pembangun mungkin menghadapi isu biasa di mana ralat berlaku dalam fungsi luaran dipanggil dalam blok transaksi jangan mencetuskan pemulangan semula.

Kemasukan Fungsi Luaran

Untuk menangani isu ini, adalah penting untuk memahami bahawa fungsi luaran yang mengandungi operasi pangkalan data harus dirangkumkan dalam model, bukan pengawal. Ini memastikan bahawa interaksi pangkalan data dilaksanakan dalam konteks transaksi.

Sampel Kod dengan Pelaksanaan Berasaskan Model

Pertimbangkan contoh kod berikut:

<code class="php">// Model

class YourModel extends CI_Model {

    public function transactionExample($data, $id) {
        
        $this-&gt;db-&gt;trans_start();

        $this-&gt;db-&gt;insert('table_name', $data);

        // Updating data
        $this-&gt;db-&gt;where('id', $id);
        $this-&gt;db-&gt;update('table_name', $test); 

        $this-&gt;db-&gt;trans_complete();

        /*Optional*/

        if ($this-&gt;db-&gt;trans_status() === FALSE) {
            # Something went wrong.
            $this-&gt;db-&gt;trans_rollback();
            return FALSE;
        } 
        else {
            # Everything is Perfect. 
            # Committing data to the database.
            $this-&gt;db-&gt;trans_commit();
            return TRUE;
        }
    }
}</code>
Salin selepas log masuk

Pertimbangan Utama

  • Secara lalai, Codeigniter menjalankan semua transaksi dalam mod ketat. Apabila mod ketat didayakan, jika mana-mana kumpulan transaksi gagal, semua kumpulan akan ditarik balik. Jika mod ketat dilumpuhkan, setiap kumpulan dilayan secara berasingan, bermakna kegagalan dalam satu kumpulan tidak akan menjejaskan yang lain.
  • Fungsi trans_complete() secara automatik melancarkan urus niaga jika ralat berlaku. Sebagai alternatif, pembangun boleh mengendalikan ralat secara manual menggunakan fungsi trans_rollback() dan trans_status().

Kemas Kini Codeigniter 4

Dalam Codeigniter 4, nama fungsi berkaitan transaksi telah berubah sedikit apabila berikut:

Function Codeigniter 3 Codeigniter 4
Start Transaction trans_start() transBegin()
Complete Transaction trans_complete() transCommit()
Rollback Transaction trans_rollback() transRollback()
Transaction Status trans_status() transStatus()

Atas ialah kandungan terperinci Mengapakah ralat dalam fungsi luaran dalam transaksi Codeigniter tidak mencetuskan pemulangan semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kurangkan penggunaan memori MySQL di Docker Kurangkan penggunaan memori MySQL di Docker Mar 04, 2025 pm 03:52 PM

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Mar 04, 2025 pm 04:01 PM

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif Apa itu SQLite? Gambaran Keseluruhan Komprehensif Mar 04, 2025 pm 03:55 PM

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Mar 04, 2025 pm 03:54 PM

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Mar 04, 2025 pm 03:49 PM

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Mar 18, 2025 pm 12:00 PM

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?

See all articles