질문 Q #12437
AR ) get_where null 체크 안되는 문제.
인생초보 2015-08-17 16:56:45
안녕하세요. 
CI로 작업중인 사람입니다.

지금 구글링해가면서 찾고있기는 한데요.

이게 버전문제인지 null 체크할때 문제가 발생합니다.

AR 부분입니다.
$this->CI->db->select('access_token')->get_where('oauth_sessions', array('id' => $session_id, 'access_token !=' => NULL));

오류입니다.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
SELECT `access_token` FROM (`oauth_sessions`) WHERE `id` = '2' AND `access_token` !=



access_token != NULL 에서 NULL 을 'NULL' 하면 또 문자열로 인식을 합니다.

혹시 이부분 관련해서 아시는 분 계시면 말씀좀 부탁드리겠습니다.

 
답변 3
#1 변종원(웅파) 2015-08-17 18:32:20
null을 ''로 대체해보세요.

아니면 ar이 아닌 쿼리로 access_token is not null 이라고 쓰셔야합니다.
#2 인생초보 2015-08-17 18:39:27
감사합니다. 일단 다른방식으로 바꿔서 돌려놓긴했는데.
구문자체가 잘못된건지. 아님 다른방법이 있는데 제가 몰라서 그런건지 궁금해서요 ㅎㅎ
수고하세요~
#3 한대승(불의회상) 2015-08-18 11:05:43
get_where() 만으로는 해결이 힘듭니다.
아래 처럼 where() 와 함께 사용하시면 해결 가능 합니다.
sql 구문 살펴 보시면 아시겠지만 NULL 체크시는 is null 과 is not null 을 사용하셔야 합니다.
$this->CI->db->select('access_token')->where('access_token is not null', NULL, FALSE)->get_where('oauth_sessions', array('id' => $session_id));