2012-02-23 3 views
4

테이블의 마지막 ID를 사용하여 고유 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; 
    } 

이 genrate합니다 : APN/0371

+7

이렇게하지 마십시오. 그냥 일반적인 auto_increment 기본 키 필드를 ID로 사용하십시오. 제로 패딩으로 출력하는 것은 디스플레이 이슈이며, ID 생성 방법을 고려하지 않아야합니다. –

답변

6

사용의 MySQL의 AUTO_INCREMENT 기능을 ID 열을. 이제는 증분 고유 ID로 각 행을 만듭니다.

Read more.

5

이 마지막 ID, 증가에 대한 데이터베이스를 조회 한 다음이 ID가와에서 사용될 수로 실행했습니다으로 고유 해당 ID에 의존 안전하지 않습니다 같은 시간에 페이지를 열면 여러 사용자가 같은 시간을 보냅니다.

이 방법은 auto_increment 필드를 사용하는 데이터베이스 테이블에 삽입하고 성공하면 마지막 삽입 ID를 기본 키로 가져 오는 것입니다. 이 작업은 PHP mysql 함수 mysql_insert_id()을 사용하여 수행됩니다. CodeIgniter는 PHP mysql_insert_id() 함수의 간단한 래퍼 인 insert_id()을 사용하여이 기능을 제공합니다.

$this->db->insert_id();