CI 묻고 답하기

제목 mysql 결과값중 int 값이 string으로 뽑히는 문제
카테고리 CI 2, 3
글쓴이 아톰_ 작성시각 2019/03/21 11:03:32
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 19410   RSS

안녕하세요.

 

코드이그나이터 model내에서 쿼리를통해 ($this->db->get()->result_array())

결과값을 json으로 바로 리턴해주는 api가 하나 있다고했을때 mysql내에서는 int값으로 지정이 되있음에도 불구하고 모두 String 값으로 캐스팅이 되어버리는 현상때문에 질문드려요.

서버단에서 위 데이터에대해서 별다른 작업을 할 필요가 없음에도 불구하고 int인 값들을 하나하나 캐스팅을 하기위해 루프를 돌리는 작업이 들어가야 하는건가요?? 아니면 다른 방법이 있을까요?? 여기저기 검색을 해보다가 답을 못찾아 여기에 질문을 남기게 됐네요

 

감사합니다.

 다음글 view에서 워터마크 처리할때 (3)
 이전글 java spring 의 BCryptPasswordEn... (2)

댓글

한대승(불의회상) / 2019/03/21 11:11:45 / 추천 0

코드이그나이터의 문제라기 보다 php mysql 결과 함수 설정 문제로 보입니다.

아래 링크를 확인해 보시면 설정을 통해 조정이 가능해 보이기는 합니다.

https://stackoverflow.com/questions/5323146/mysql-integer-field-is-returned-as-string-in-php

 

아톰_ / 2019/03/21 11:36:48 / 추천 0

한대승님 답변 감사합니다.

저도 추가로 찾아봤는데 말씀하신것처럼 php mysqli 드라이버 설정 관련 문제인것같네요. 

우선 system -> database -> drivers -> mysqli -> mysqli_driver.php 파일의 mysqli 옵션 설정부분에 아래 설정을 추가해주니 정상 작동 됩니다. (183 line)

$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, TRUE);

 

한편 json_encode($data,JSON_NUMERIC_CHECK) 두번째 인자값을 넣어주는 해결책도 있어 사용해봤더니 DB에선 varchar 필드인데도 불구하고 실제 데이터는 숫자 형식이라면 이것또한 int값으로 캐스팅되는 문제가 있네요. 

같은 고민을 하시는분들도 참고하셨으면 좋겠네요

 

감사드립니다.!