创建独特的id

时间:2012-02-23 05:21:54

标签: php mysql codeigniter

我正在使用函数来使用表中的最后一个id创建唯一ID。但问题出现的时候 那个人大约在同一时间打开。你能否建议当前功能的任何整改?由于此功能用于生产和实时服务器,因此代码中的一些调整将会更好。

这是函数使用:

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

2 个答案:

答案 0 :(得分:6)

在ID列上使用MySQL的AUTO_INCREMENT功能。它将使每个现在的行具有增量唯一ID。

<强> Read more.

答案 1 :(得分:5)

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

解决这个问题的方法是插入使用auto_increment字段的数据库表,并在成功时获取最后一个插入ID作为主键。这是使用PHP mysql函数mysql_insert_id()完成的。 CodeIgniter也使用insert_id()来实现此功能,mysql_insert_id()是PHP {{3}}函数的简单包装器。

$this->db->insert_id();