星语 发表于 2012-11-20 10:45:07

插入数据库后立即获得插入数据的主键字段id信息

问题描述:做项目时,有时我们需要同步获得插入数据的id以备其他操作使用。比如,在我们发表文章时,可能需要自定义文章分类,这时,我们所做的事情就分为了两步,提交数据后,首先 插入分类信息,获得分类id后 再将文章插入到数据库。
解决方案:
第一种:在插入分类后获得最后一条数据的id既是所需的分类id信息,但这里有一个问题,如果多个人同时操作,那么你获得的可能并非你插入的数据。
第二种:使用mysql提供的方法返回操作id 如果直接写mysql 问题可以解决。但如果要用ci进行操作的话,该如何写呢。
简单示例:仅供参考

我们可以做个公共模型 暂且叫做 Common_model.php

然后写一个简单函数即可实现。为了操作方便,供多个模块使用,函数提供两个参数 一个是 数据表名称,一个是所要插入的数据数组。


/**
   * @function insert_info_return
   * @param$table $dataarr
   * @return id
   *
   */
    function insert_info_return($table,$dataarr){
            if($dataarr){
                    if($this->db->insert($table, $dataarr)){
                            $res = $this->db->query("SELECT LAST_INSERT_ID()")->row_array();
                            //print_r($res);
                            return $res['LAST_INSERT_ID()'];
                            //return true;
                    }
            }else{
                    return false;
            }
    }

测试代码,仅供参考

jeongee 发表于 2012-11-20 10:50:35

哥,不用这么麻烦,$this->db->insert_id();搞定

yuvista 发表于 2012-11-20 10:52:46

本帖最后由 yuvista 于 2012-11-20 10:56 编辑

楼上正解,CI提供这个查询辅助函数。

星语 发表于 2012-11-20 10:54:02

jeongee 发表于 2012-11-20 10:50 static/image/common/back.gif
哥,不用这么麻烦,$this->db->insert_id();搞定

啊 谢谢 jeongee,我悲剧了:'(

jeongee 发表于 2012-11-20 10:59:12

星语 发表于 2012-11-20 10:54 static/image/common/back.gif
啊 谢谢 jeongee,我悲剧了

:lol 多看手册,哈哈哈

星语 发表于 2012-11-20 11:00:38

jeongee 发表于 2012-11-20 10:59 static/image/common/back.gif
多看手册,哈哈哈

恩,谨记好高骛远,老老实实做事,jeongee 在上

farwish 发表于 2014-8-4 01:52:46

顶了。
页: [1]
查看完整版本: 插入数据库后立即获得插入数据的主键字段id信息