CI 묻고 답하기

제목 active record 관련해서 질문 드립니다.
글쓴이 불타는나그네 작성시각 2014/04/30 15:51:36
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 13131   RSS
안녕하세요. 이렇게 또 찾아뵙네요.

바로 본론으로 들어가겠습니다.

active record로 mysql에 id 값을 찾으면 값이 나오는게 정상입니다.

잘 나옵니다.

근데 이게 이상하게 조건절에 빈값이 들어가는데도 값을 조회해 나오는 겁니다.

소스코드 설명 들어가겠습니다.

== 소스코드 설명 ==



controller 생성자 이구요.



요놈이 메인 View를 뿌려주는 controller 입니다.

session이 관련있을지도 모른다는 생각에 부가 설명 넣겠습니다.

보시다 싶이 session id 값을 받는데요.

로그인 성공 시 session 에 id 값과 관리자인지, 일반인지 구분해서 배열에 담아 세션에 저장시키구요.

로그인 실패 시 그냥 손님으로 배열에 담아 session에 저장 시킵니다.

물론 id값을 저장하는 코드는 없구요.

session에 저장되있다면 가져오겠죠.

처음 메인화면을 띄운다면 세션값을 불러와도 빈값이 들어갈거라고 예상했구요.
(브라우져 끄면 세션 꺼놓는 설정 해뒀습니다.)

session id 값을 model에 넘긴 뒤 id값으로 쿼리는 하는데요.

여기서 자꾸 문제가 되는게


이게 모델 생성자이고,



얘가 id 값을 받아서 쿼리를 해주는 녀석인데,

user['id']; 값도 찍어보니 정확하게 값이 들어가 있지 않습니다. 예상 대로요.

근데 이놈이 db 칼럼에 첫번째 값을 자꾸 찍어옵니다.

어찌해야 될까요? 한 수 부탁드립니다.

다른 쿼리를 가져오나 싶어서 active record 주석 처리를 하니 역시 오류가 나구요.

분명히 저놈이 db 값을 가져오는건데,

where 절에 빈칸이 들어갔는데, 왜 값을 찍어올까요.

 
 다음글 모델에 대해서 다시 질문 드릴게요. (2)
 이전글 특정한 페이지에서 js와 css를 부르는 방법이 있을까... (3)

댓글

변종원(웅파) / 2014/04/30 15:58:16 / 추천 0
빈칸, null, 0 이 같은 표현이기도 하고 다른 표현이기도 합니다.

컨트롤러에서 var_dump($userID); 찍어보세요.

그리고 컨트롤러에서 모델로 값을 넘겼으면 그 값을 계속 사용하셔야지 모델에서 세션값을 가지고 분기를 하는 이유는 왜일까요?
그럴거면 모델에 값을 넘기지 않고 세션 값 가져다 쓰면 되는데요? ^^ 
한대승(불의회상) / 2014/04/30 16:00:15 / 추천 0
DB에 id 값이 빈값인 데이터가 있을지도 모릅니다.

프로파일러로 확인해 보세요.
불타는나그네 / 2014/04/30 16:12:52 / 추천 0
var_dump($userID); 로 찍어도 bool(false)가 나오네요. ㅠㅠ

컨트롤러에서 모델로 가는 값은 session에 저장되있는 현재 사용자의 id 값이구요.

이 id 값을 db에서 찾아서 해당 사용자의 권한를 조회해서

권한에 따라 뷰에서 보이는 메뉴에 제한을 두려고 하거든요.

세션 자체에 권한 값을 저장하는 방법도 있긴한데..

일단 저게 where 절에 조건이 없는데 오류가 나도 시원찮을 판에 값을 가져오니까 신기해서요 ^^

혹시 get_where 함수 원형 보신 분이 있나 해서요..

id 값이 빈칸은 없네요 ㅠㅠ. 데이터가 5개 밖에 안되는지라 눈으로도 확인이 되요 ㅠㅠ
 
불타는나그네 / 2014/04/30 16:18:25 / 추천 0
아하. 이게 웅파님 말씀대로 빈칸이 null이네요. null 값이 들어가니까

array로 넣은 조건절이 없는 거나 마찬가지라.

테이블 자체를 불러오는 거였군요.
들국화 / 2014/04/30 16:19:38 / 추천 0
음.. 액티브액스는 전혀 아는게 없어서 말하기 좀 그렇킨 한데요.
$this->db->last_query()로 쿼리문을 찍어 보세요.
실제 실행되는 쿼리문을 보면 뭐가 문제인지 알수 있을것 같네요.
다른 클라이언트로 실행해서 어떤값을가져오는지 보면 더 명확하구요.