CodeIgniter activerecord,获取最后的插入ID?


153

是否有任何选项可以获取CodeIgniter中新记录的最后插入ID?

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

考虑字段id(自动递增)firstcolumn和secondcolumn的表组成。

这样,您可以在以下代码中使用插入ID。


4
我多次提这个问题。非常感谢!
giripp 2014年

Answers:


277

真可惜

我看了一下用户指南,第一个功能是$this->db->insert_id();

这也适用于activerecord插入...

编辑:我更新了链接


29
对于这样的事情,用户指南是您最好的朋友。我使用Codeigniter已有2年以上了,但我仍然发现我从未知道过的类似函数。
Tom Schlick 2010年

8
请确保将插入内容和此函数包装在事务中,因为查询调度程序可能会在运行此函数之前插入另一个对象
parker.sikand 2013年


我需要使用insert_id(),但是我不知道被授予获取ID的insert_id()在它之前属于insert()!我的意思是,是否有可能在另一个请求中检索属于另一个insert()的ID?
新墨西哥州,


11

对于特定表,不能使用$ this-> db-> insert_id()。即使最后一次插入发生在很久以前,也可以这样获取。可能是错误的。但对我来说很好

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

8

有助于请求ID和查询的详细信息列表是

对于获取最后插入的ID:这将从表中获取最后的记录

$this->db->insert_id(); 

提取SQL查询后在模式请求后添加

$this->db->last_query()


6

插入查询后,使用此命令$this->db->insert_id();返回最后插入的ID。

例如:

$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

试试这个。

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,您也可以访问此链接ellislab.com/codeIgniter/user-guide
拉罕



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

0

在codeigniter 3中,您可以执行以下操作:

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

您可以从这里https://codeigniter.com/user_guide/database/helpers.html获得有关Codeigniter 3的帮助。

在Codeigniter 4中,您可以按以下方式获取最后插入的ID:

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

您可以从这里https://codeigniter4.github.io/userguide/database/helpers.html获得有关Codeigniter 4的帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.