CI 묻고 답하기

제목 db에서 값을 가지고 올 때, count_all_results() 에서 문제가 발생합니다.
글쓴이 bismute 작성시각 2014/10/07 16:14:59
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 15921   RSS
db에서 값을 가지고 올 때, count_all_results() 에서 문제가 발생합니다.

function list_result($adm = 1) {

        $result['total_cnt'] = $this->db->count_all_results('popup');

        if($adm){
            $this->db->select('pp_idx,pp_title,pp_filename,pp_fixed_yn,pp_start_date,pp_end_date,pp_ppwidth,pp_ppheight,pp_datetime');
            $this->db->order_by('pp_idx', 'desc');
            $qry = $this->db->get('popup');
            $result['qry'] = $qry->result_array();
        }else{
            $result = $this->db->select('pp_idx,pp_title,pp_filename,pp_fixed_yn,pp_start_date,pp_end_date,pp_ppwidth,pp_ppheight,pp_datetime')->get_where('popup',array('pp_fixed_yn =' => 'Y'))->result_array();
        }
        return $result;
    }

다음과 같이 구성해서 가지고 오려고 하는데, count_all_results('popup');

이 부분에서 'popup' 테이블의 개수를 가지고 오게 하려고 하는데

Call to a member function count_all_results() on a non-object 라는 에러가 계속 떨어집니다.

제가 무엇을 잘못해서 저런 상황이 발생하는 걸까요?

 
 다음글 임베디드 리눅스 (3)
 이전글 codeigniter 트랜잭션에서 롤백 시 오류가 되는... (2)

댓글

zetracker / 2014/10/07 16:28:42 / 추천 0
$result 를 초기화 ..안해도되려나요?

function list_result($adm = 1) {
      
      $result = array();
        $result['total_cnt'] = $this->db->count_all_results('popup');

저거 추가해서 확인해보시겠어요? non-object에 결과를 넣으려고한다고 말하는것같아요~ 

 
변종원(웅파) / 2014/10/07 16:34:17 / 추천 0
db 종류와 버전은요?

db 드라이버가 로딩된거는 맞으시죠?
bismute / 2014/10/07 16:39:43 / 추천 0
zetracker //
추가해봤는데 에러는 여전히 동일하게 출력됩니다.

변종원(웅파) //
db종류는 mysql 이고, 버전은 5.6.17입니다.

db는 제대로 연결된 거 확인했습니다. db세팅을 맞추고서 index 쪽에서 게시글들을 불러오는 작업을 하는 가운데 발생한 거니.
들국화 / 2014/10/07 16:55:53 / 추천 0
AR을 사용할줄 몰라서 답을 안달았는데요.
디비연결이 잘되었다면 그냥 쿼리문으로 하는건 어떨까요?
zetracker / 2014/10/07 16:59:28 / 추천 0
저 코드가 어디에 쓰인건지도 알고싶습니다~ 모델쪽이나 컨트롤러클래스 내부의 function 인가요 아니면 다른데쓰인건가요?
bismute / 2014/10/07 17:08:25 / 추천 0
zetracker//
위의 코드는 모델쪽에서 사용한 거고요,

컨트롤러 클래스 쪽 내에서는 

public function index()
{
        $popup = $this->M_a_popup->list_result(0);
        $pulayer = "";
}

이렇게 사용을 하는데 M_a_popup->list_result(0); 이렇게 불러오면서 문제가 발생되는 거 같더라구요.
한대승(불의회상) / 2014/10/07 17:10:47 / 추천 0
테이블의 모든 레코드수를 가져오는 거라면..
 
$this->db->count_all();
zetracker / 2014/10/07 17:23:16 / 추천 0
bismute

한대승
님께서 제시해주신 count_all() 로 변경해보시구요 (왠지 이거일거같은 느낌이 드네요 ..?)

그래도안되면 모델 내부에 간단하게 select 해서 데이터 출력하는함수 테스트로 만드셔서
에러없이 작동하는지 확인해보시구요
ex)
 fucntion getPopupData(){
     return $this->db->get('popup')->result();
}

다른 함수는 되는데 본문에 써주신 함수만 안되면 좀더 생각해봐야겠네요 
letsgolee / 2014/10/08 07:04:40 / 추천 0
Call to a member function count_all_results() on a non-object 에러는 $this->db를 데이터베이스 오브젝트로 인식하지 못했기 때문에 나타나는 에러입니다. 따라서 앞서 $this->load->database()가 있는지 혹은 class의 정의시 parent::__construct()가 혹 빠졌는지 혹은 어떤 이유에서 $this->db가 생성되지 않은 이유를 찾아야 할 것 같네요.