首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建唯一id

创建唯一id
EN

Stack Overflow用户
提问于 2012-02-23 13:21:54
回答 2查看 195关注 0票数 4

我使用函数来使用表中的最后一个id来创建唯一的id。但当人大约同时打开时,问题就来了。你能建议对当前功能进行任何调整吗?由于此函数用于生产环境和实时服务器上,因此在代码中稍作调整会更好。

下面是使用以下代码的函数:

代码语言:javascript
复制
function approvalNumber()
    {
        $data=array();
        $text = "APN/";
        $position = "front";
        $this->db->order_by('approval_id','desc');
        $this->db->limit('1','0');
        $query=$this->db->get('approval_note');
        if($query->num_rows()>0)
        {
            foreach($query->result_array() as $row){
                $data[] = $row;                 
            }
        }
        $query->free_result();
        if(count($data))
        $id=str_pad((int) $data['0']['approval_id']+1,4,"0",STR_PAD_LEFT);
        else
        $id='0001';
        return $approvalNo = $text.$id; 
    }

这将生成: APN/0371

EN

回答 2

Stack Overflow用户

发布于 2012-02-23 13:33:50

在ID列上使用MySQL的AUTO_INCREMENT特性。它将使每个now行都具有一个递增的唯一ID。

票数 6
EN

Stack Overflow用户

发布于 2012-02-23 13:35:20

在数据库中查询最后一个ID、增量,然后依赖该ID是唯一的,这是不安全的,因为如果多个用户同时打开页面,该ID可以且将被多个用户同时使用。

解决方法是插入到使用auto_increment字段的数据库表中,并在成功时获得最后一个插入id作为主键。这是使用PHP mysql函数mysql_insert_id()完成的。使用insert_id()时,CodeIgniter也具有此功能,它是PHP mysql_insert_id()函数的一个简单包装器。

代码语言:javascript
复制
$this->db->insert_id();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9407630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档