用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8761|回复: 6
收起左侧

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

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

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

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

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;
        }
    }
 
复制代码

测试代码,仅供参考
发表于 2012-11-20 10:50:35 | 显示全部楼层
哥,不用这么麻烦,$this->db->insert_id();搞定

评分

参与人数 1威望 +1 收起 理由
zhujianeng + 1 很给力!

查看全部评分

发表于 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
哥,不用这么麻烦,$this->db->insert_id();搞定

啊 谢谢 jeongee,我悲剧了
发表于 2012-11-20 10:59:12 | 显示全部楼层
星语 发表于 2012-11-20 10:54
啊 谢谢 jeongee,我悲剧了

多看手册,哈哈哈
 楼主| 发表于 2012-11-20 11:00:38 | 显示全部楼层
jeongee 发表于 2012-11-20 10:59
多看手册,哈哈哈

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

本版积分规则