首页 > 数据库 > mysql教程 > 如何在 CodeIgniter Active Record 中执行插入操作后检索最后一个自动递增的 ID?

如何在 CodeIgniter Active Record 中执行插入操作后检索最后一个自动递增的 ID?

Mary-Kate Olsen
发布: 2024-11-04 22:17:02
原创
841 人浏览过

How to Retrieve the Last Auto-Incremented ID After an Insert Operation in CodeIgniter Active Record?

使用 CodeIgniter Active Record 获取最后一个自动递增的 ID

问题:

你正在尝试使用 CodeIgniter 的 Active Record 执行插入操作后检索最后一个自动递增的 ID,但模型中的 add_post() 方法返回空值。

控制器内部:

<code class="php">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);
}</code>
登录后复制

模型内部:

<code class="php">function add_post($post_data){
    $this->db->trans_start();
    $this->db->insert('posts',$post_data);
    $this->db->trans_complete();
    return $this->db->insert_id();
}</code>
登录后复制

答案:

问题在于顺序模型中 add_post() 方法中的操作。要正确检索插入操作后最后一个自增 ID,您需要:

  1. 先执行插入操作,使用 $this->db->insert('posts', $post_data) 方法。
  2. 然后,使用 $this->db->insert_id() 方法检索最后插入的 ID。
  3. 返回最后插入的 ID 作为结果add_post() 方法。

解决方案:

<code class="php">function add_post($post_data){
    $this->db->insert('posts', $post_data);
    $insert_id = $this->db->insert_id();

    return $insert_id;
}</code>
登录后复制

注意:

如果您正在执行在单个事务中进行多次插入,您可以使用 $this->db->trans_start() 和 $this->db->trans_complete() 方法来开始和结束事务。

以上是如何在 CodeIgniter Active Record 中执行插入操作后检索最后一个自动递增的 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板