创建独特的id

use*_*641 4 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; 
    }
Run Code Online (Sandbox Code Playgroud)

这将产生:APN/0371

Mad*_*iha 6

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

阅读更多.


Hig*_*ife 5

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

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

$this->db->insert_id();
Run Code Online (Sandbox Code Playgroud)