CodeIgniter Activerecord, lấy id chèn cuối cùng?


153

Có tùy chọn nào để lấy id chèn cuối cùng của bản ghi mới trong CodeIgniter không?

$last_id = $this->db->insert('tablename',
    array('firstcolumn' => 'value',
    'secondcolumn' => 'value')
);

Xem xét các nhược điểm bảng của trường id (autoincrement) Firstcolumn và secondcolumn.

Bằng cách này bạn có thể sử dụng id chèn trong đoạn mã sau.


4
Tôi tiếp tục đến câu hỏi này nhiều lần. Cảm ơn rất nhiều!
giripp

Câu trả lời:


277

Thật xấu hổ cho tôi ...

Tôi đã xem hướng dẫn sử dụng và chức năng đầu tiên là$this->db->insert_id();

Điều này cũng hoạt động với chèn Activerecord ...

EDIT: Tôi đã cập nhật liên kết


29
userguide là người bạn tốt nhất của bạn cho những thứ như thế này. Tôi đã sử dụng codeigniter được hơn 2 năm và tôi vẫn tìm thấy các chức năng như thế này mà tôi chưa bao giờ biết đến.
Tom Schlick

8
Hãy chắc chắn bọc hàm chèn của bạn và chức năng này trong một giao dịch vì bộ lập lịch truy vấn có thể chèn một đối tượng khác trước khi chạy chức năng này
parker.sikand

3
liên kết đã chết, liên kết được cập nhật: ellislab.com/codeigniter/user-guide/database/helpers.html
womd

Tôi cần sử dụng insert_id (), nhưng tôi không biết rằng insert_id () được cấp để nhận ID thuộc về insert () trước nó! Ý tôi là, Có thể lấy ID thuộc về một insert () khác trong yêu cầu khác không?
NM

37

Id chèn cuối cùng có nghĩa là bạn có thể nhận id tăng tự động được chèn bằng cách sử dụng phương thức này trong bản ghi hoạt động,

$this->db->insert_id() 
// it can be return insert id it is 
// similar to the mysql_insert_id in core PHP

Bạn có thể tham khảo liên kết này, bạn có thể tìm thấy một số công cụ khác.

Thông tin từ việc thực hiện một truy vấn


liên kết không chính xác. Xin vui lòng sửa liên kết. liên kết mới codeigniter.com/userguide3/database/helpers.html
Hồi giáo Shaiful 15/2/2015

11

đối với bảng cụ thể, bạn không thể sử dụng $ this-> db-> insert_id (). ngay cả lần chèn cuối cùng đã xảy ra từ lâu, nó có thể được tải xuống như thế này. có thể sai. nhưng làm việc tốt cho tôi

     $this->db->select_max('{primary key}');
     $result= $this->db->get('{table}')->row_array();
     echo $result['{primary key}'];

8

Danh sách các chi tiết giúp yêu cầu id và truy vấn là

Để tìm nạp Id được chèn lần cuối: Điều này sẽ tìm nạp các bản ghi cuối cùng từ bảng

$this->db->insert_id(); 

Tìm nạp truy vấn SQL thêm điều này sau khi yêu cầu phương thức

$this->db->last_query()

6

$this->db->insert_id();

Hãy thử điều này Như câu hỏi mong muốn của bạn.


6

Sau truy vấn chèn của bạn, sử dụng lệnh này $this->db->insert_id();để trả về id được chèn cuối cùng.

Ví dụ:

$this->db->insert('Your_tablename', $your_data);

$last_id =  $this->db->insert_id();

echo $last_id // assume that the last id from the table is 1, after the insert query this value will be 2.

5

Thử cái này.

public function insert_data_function($your_data)
{
    $this->db->insert("your_table",$your_data);
    $last_id = $this->db->insert_id();
    return $last_id;
}

@Dennis Decoene bạn cũng có thể truy cập liên kết này ellislab.com/codeIgniter/user-guide .
Raham


2
$this->db->insert_id()  

// hãy thử cái này


Câu trả lời trùng lặp này không thêm giá trị mới cho trang. Nó nên được gỡ bỏ.
mickmackusa

1
if($this->db->insert('Your_tablename', $your_data)) {
    return $this->db->insert_id();
}
return false 

0

Trong codeigniter 3, bạn có thể làm như sau:

if($this->db->insert("table_name",$table_data)) {
    $inserted_id = $this->db->insert_id();
    return $inserted_id;
}

Bạn có thể nhận trợ giúp cho Codeigniter 3 từ đây https://codeigniter.com/user_guide/database/helpers.html

Trong Codeigniter 4, bạn có thể nhận id được chèn lần cuối như sau:

$builder = $db->table("your table name");
if($builder->insert($table_data)) {
    $inserted_id = $db->insertID();
    return $inserted_id;
}

Bạn có thể nhận trợ giúp cho Codeigniter 4 từ đây https://codeigniter4.github.io/userguide/database/helpers.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.