Menggunakan
transactions
berarti mendukung database untuk memasukkan data dengan aman. Jadi di Codeigniter kami menulis setiap fungsi terkait database di Model tidak di Pengontrol. . Dan dalam kode kedua Anda (yang tidak berfungsi) Anda telah menunjuk model di sana.(utils
). Sangat sederhana saya yakin ini tidak akan berhasil. Karena bukan merupakan insert data dengan model dan Controller paralel. Transaksi harus dikodekan dalam Model(Saya akan menulis dalam Model dalam jawaban saya ).
Muat barang-barang ini juga
- Perpustakaan Basis Data
- Kelas Model
- Pembantu URL
- Sesi
Asumsi
Dalam kode Anda, Anda telah menggunakan $data
dan $test
sebagai larik. Jadi saya berasumsi ada dua array untuk memasukkan dan memperbarui data.
Set data Anda
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$id = 007;
$test = array(
'title' => $title,
'name' => $name,
'date' => $date
);
Kode Anda
$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE); # See Note 01. If you wish can remove as well
$this->db->insert('table_name', $data); # Inserting data
# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $test);
$this->db->trans_complete(); # Completing transaction
/*Optional*/
if ($this->db->trans_status() === FALSE) {
# Something went wrong.
$this->db->trans_rollback();
return FALSE;
}
else {
# Everything is Perfect.
# Committing data to the database.
$this->db->trans_commit();
return TRUE;
}
Catatan
- Secara default Codeigniter menjalankan semua transaksi dalam Mode Ketat. Saatmode ketat diaktifkan , jika Anda menjalankan beberapa grup transaksi, jika satu grup gagal, semua grup akan dibatalkan. Jika mode ketat dinonaktifkan , setiap kelompok diperlakukan secara independen , artinya kegagalan satu kelompok tidak akan mempengaruhi yang lain .