CI 묻고 답하기

제목 초보 db->get 쿼리 시 배열값 확인하세요!!
글쓴이 지지고 작성시각 2010/12/01 17:21:03
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 26700   RSS
1. 액티브레코드를 ($this-db-get('테이블명') 이용할 때 배열값이 생각과 다르게 나오네요ㅎ

코드

function lists (){
 $data=$this->db->get('ci_documents');
 print_r($data);
 
예상결과 실제결과 삽질도
Array
(
    [0] => stdClass Object
        (
            [document_srl] => 1
            [content] => 테스트 
            [name] => 김똘똘
            [list_order] => 0
        )

    [1] => stdClass Object
        (
            [document_srl] => 2
            [content] => 두 번째 내용
            [name] => 이영수
            [list_order] => 0
        )

)
CI_DB_mysql_result Object
(
    [conn_id] => Resource id #26
    [result_id] => Resource id #27
    [result_array] => Array
        (
        )

    [result_object] => Array
        (
        )

    [current_row] => 0
    [num_rows] => 2
    [row_data] => 
)
3000%

수정코드

function lists (){
 $data=$this->db->get('ci_documents');
 $never_die=$data->result(); 
  // result() 함수로 result_array 배열에 값을 $never_die 에 넣는다.
 print_r($never_die);
    }

경우 잘 나옵니다. 어제부터 이걸 몰라서 삽질했네요... 쿼리값만 줄 줄 알았는데 저런걸 같이 줄줄 몰랐군요..
전 제가 뭘 잘 못한줄 알고... 쿼리값이 왜 안넘어오지?? 자꾸 변수가 없다고 출력되는거지?? 이러면서 혈압 팍팍 올렸네요.ㅎ

메뉴얼만 보면 저렇게 해도 동작이 되는 듯하게 보이는데 (마법에 쿼리처럼 보였죠..이런 신세계가!!!ㅎㅎㅎ)
지금은 자동으로 뿅 해줄줄 알았던 액티브레코드가 조금 다른 배열이란걸 알았습니다..

PS. $db['default']['dbprefix'] = "ci_"; 작동하지 않는건가요??

get->db ['comment'] 하면 ci-comment 테이블에 접속할 줄 알았는데
그냥 comment 테이블에 접속하네요...

저 자료저장소 전머릿말(?)은 어떨 때 쓰는건가요??



 다음글 컨트롤러에서 트랜잭션 처리가 가능할까요? (4)
 이전글 config/database.php가 작성되었는지 확인... (2)

댓글

변종원(웅파) / 2010/12/01 18:32:14 / 추천 0
첫번째는 mysql_query($sql) 만 하신 결과입니다. 당연한 결과입니다. ^^;
result()해줘야 mysql_result() 한 것과 동일합니다.

기본셋은

$result = $this->db->get('table');
print_r($result->result());

두번째도 접두어가 ci_ 인데 ci-를 찾을 수 있을까요? ^^
매뉴얼에 의하면 하나의 데이터베이스로 여러개의 ci를 사용할때 유용하다고 되어 있습니다.
사정상 데이터베이스는 하나밖에 쓸 수 없고 ci를 여러개(도메인 여러개) 돌려야할 경우
각각의 ci별로 prefix를 다르게 주면 하나의 데이터베이스에서 동일한 이름의 테이블을 쓰더라도
알아서 각각의 ci별로 자기 테이블을 지정해준다는겁니다.
지지고 / 2010/12/02 15:43:19 / 추천 0
아.... 그랬군요 ㅎㅎ

개념이 띄엄띄엄인 부분 채워주셔서 감사합니다 ㅎㅎ^^