【问题标题】:Getting auto incremented id from table after inserting row插入行后从表中获取自动增量ID
【发布时间】:2014-01-22 02:22:33
【问题描述】:

型号:

$data = array( 'firstname' => $fname,
               'lastname' => $lname );

$result = $this->db->insert('users',$data);

假设代码插入了一个新行。在桌子上,我有 3 列,id,username,pass。 id 是自动递增的。插入后,我将如何检索新插入行的 id。假设我要插入至少 2 行并具有相同的名字或姓氏。

这是我的计划,我还不确定它是否会起作用。

$sql = $this->db
    ->select('id')
    ->where(' ', $variable)
    ->from('user')
    ->get()
    ->result_array();

我不确定在 where 子句上放什么,因为它可能包含具有相同名字和姓氏的行。我需要获取新插入行的自动递增 id。 id也是我的PK。

【问题讨论】:

    标签: jquery database codeigniter


    【解决方案1】:

    可以通过L$this->db->insert_id();获取

    $result = $this->db->insert('users',$data);
    $latest_id = $this->db->insert_id();
    

    阅读更多 Query Helpers

    但是,如果您使用insert_batch() 插入多个文件,这将不起作用,它只会从批处理中获取最后插入的 id。所以如果您打算插入多个数据,您需要一个 forloop,然后执行正常操作将插入的键保存在数组示例中时插入

    foreach($data as $v)
    {
         //prep data colum name as key ,value as value
         $input['firstname'] = $v->firstname;
         $input['lastname'] = $v->lastname;
    
         //insert
         $this->db->insert('users',$input);
         //store keys in array
         $inserted_ids[] = $this->db->insert_id();
    
    }
    
    print_r($inserted_ids);
    

    【讨论】:

    • 如果我错了,请纠正我,但来自名称本身。它是内置功能吗?如果是,那么这是否意味着检索我表上最新插入的 id?
    • @user3205047 是的,检索最新插入的 id。
    • 谢谢。我会接受你的回答。它在 ci 文档中的什么位置?
    • @user3205047 添加了链接
    • $latest_id 变量是否只包含最新插入的内容?所以如果我将它存储在一个数组中应该没问题,因为我插入了多个值并将它放在一个 foreachloop 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多