Saya memiliki permintaan memasukkan (gaya catatan aktif) yang digunakan untuk menyisipkan bidang formulir ke dalam tabel MySQL. Saya ingin mendapatkan id penambahan otomatis terakhir untuk operasi penyisipan sebagai nilai balik dari kueri saya, tetapi saya memiliki beberapa masalah dengannya.
Di dalam controller:
function add_post(){
$post_data = array(
'id' => '',
'user_id' => '11330',
'content' => $this->input->post('poster_textarea'),
'date_time' => date("Y-m-d H:i:s"),
'status' => '1'
);
return $this->blog_model->add_post($post_data);
}
Dan di dalam model:
function add_post($post_data){
$this->db->trans_start();
$this->db->insert('posts',$post_data);
$this->db->trans_complete();
return $this->db->insert_id();
}
Saya tidak mendapatkan apa pun sebagai kembalinya add_post dalam model
mysql
codeigniter
Dev Afghanistan
sumber
sumber
db->insert_id()
kembalifalse
setelah adb->trans_complete()
. Pastikan Anda mendapatkan milik Andainsert_id()
sebelum menyelesaikan transaksi.Jawaban:
Coba ini
Dalam hal beberapa sisipan yang dapat Anda gunakan
sumber
Tidak diperlukan transaksi di sini, ini sudah cukup:
sumber
sumber
Dari dokumentasi :
Karena itu, Anda dapat menggunakan sesuatu seperti ini:
sumber
karena Anda telah memulai Transaksi melalui penyisipan data begitu, Periksa dulu transaksi selesai atau tidak. setelah Anda memulai transaksi, itu harus dilakukan atau kembalikan sesuai dengan status transaksi;
di atas, kami telah berkomitmen data pada transaksi yang sukses bahkan Anda mendapatkan cap waktu
sumber
Hanya untuk menyelesaikan topik ini: Jika Anda mengatur meja Anda dengan kunci primer dan kenaikan otomatis, Anda dapat menghilangkan proses penambahan id secara manual.
Lihatlah contoh ini
Sekarang Anda bisa memasukkan baris
sumber
sumber
Menggunakan driver PHP mysqli, Anda tidak bisa mendapatkan insert_id setelah Anda komit.
Solusi sebenarnya adalah ini:
Sumber untuk struktur kode: https://codeigniter.com/user_guide/database/transactions.html#running-transactions- secara manual
sumber
Anda harus menggunakan
$lastId = $this->db->insert_id();
sumber