제목 | mysql bigint 사용시 php에서 표현문제 | ||
---|---|---|---|
글쓴이 | 변종원(웅파) | 작성시각 | 2011/08/19 11:06:32 |
|
|||
자동증가해서 유니크한 값을 사용하는 id필드를 int형이 아닌 bigint로 사용했을 경우 다음과 같은 문제가 나타납니다. 실제 bigint 값 : 11010000000016 위 값에 +1을 하게되면 php에서는 1.101E+13 이렇게 표시를 합니다. 정상적으로 값을 표현하기 위해서는 sprintf("%.0f",$변수) <?php $board_id = '11010000000016' $board_id = $board_id + 1; echo $board_id."===".sprintf("%.0f",$board_id) ?> 결과 1.101E+13===11010000000016 그리고 두번째 insert 할때 bigint형 id에 자동증가 값이 들어가고 codeigniter의 $this->db->insert_id()를 호출하면 bigint형으로 값을 못 가져오고 int형으로 가져옵니다. <?php //insert 액션후 $lid = $this->db->insert_id(); $last_id = big_last_id(); echo $lid."-----".$last_id; function big_last_id() { $last_id_query = $this->db->query('select last_insert_id() as lst'); $last_ids = $last_id_query->row(); return $last_ids->lst; } ?> 결과 1768646720-----200100000000064그래서 위와 같이 mysql 내부함수인 last_insert_id()로 처리를 해야합니다. 이 넘들 때문에 작업시간이 좀 딜레이됐네요. ㅋ |
|||
다음글 | 자바스크립트 압축용 라이브러리 (1) | ||
이전글 | 개발환경을 들고 다니자! (4) | ||
들국화
/
2011/08/19 11:32:53 /
추천
0
|
변종원(웅파)
/
2011/08/19 13:53:49 /
추천
0
테스트는 못해봤지만 동일한 현상이 발생할 것 같습니다.
|
이현석
/
2011/08/19 22:54:35 /
추천
0
아..저도 id 필드 bigint로 사용 중인데 팁 감사합니다.
|
한대승(불의회상)
/
2011/08/29 15:06:51 /
추천
0
좋은정보.. 캄사...
|
들국화
/
2011/09/05 15:11:47 /
추천
0
$this ->db->insert_id();
|
eitetu
/
2011/09/05 15:43:26 /
추천
0
int 최대값 넘어가면서 문재는 불거지죠...
|
혹시 unsigned int 는 문제 없겠죠?
저는 id가 40억 이면 될듯 해서.. ^^;