CI 묻고 답하기

제목 db 쿼리 결과값 받아올때 에러가 발생합니다.
카테고리 CI 2, 3
글쓴이 니로 작성시각 2017/01/23 12:53:15
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 28767   RSS
//컨트롤러..

public function index()
{					
		
		if(!$this->session->userdata('grade') || $this->session->userdata('grade') != '2')
		{
			echo("<script>location.href='/login';</script>");
		}
		
		$this->data['order'] = $this->admin_main->get_today_order(); 
		$this->data['e_count'] = $this->admin_main->get_today_esti(); 
		$this->data['mv_count'] = $this->admin_main->get_visit();  //여기 모델 안에 함수에서만 db에러발생
                ................이하생략
}



//모델------- get_today_order, get_today_esti 함수내용도 아래와 동일, 테이블만 다름

	public function get_visit()
	{

		$now = date("Y-m-d");

		$this->db->select('count(CON_ID) COUNT');
		$this->db->from($this->table_name['ECC']);
		
		//오늘기준 검색
		$sdate  = "DAYDATE >= TO_DATE('".$now."','YYYY-MM-DD')";
		$this->db->where($sdate);
		$edate  = "DAYDATE < TO_DATE('".$now."','YYYY-MM-DD')+1";
		$this->db->where($edate);
		
		$query = $this->db->get();
				
		if($query->num_rows() > 0)  //이부분에러. 이부분 없으면.. row_array에러
		{
			$data = $query->row_array();
		}
		return $data;
	}

//에러 메세지

Fatal error: Call to a member function num_rows() on a non-object


get_today_order, get_today_esti,get_visit
각 세함수 모두 동일한 모양의 쿼리를 사용하고 테이블만 다르게 사용중입니다.
다른것 전혀 없구요..

근데 왜 get_visit() 함수안에서 쿼리결과값을 생성하려고 하면 에러가 발생하는지 이유를 모르겠습니다.

로컬에서는 모두 잘돌아가는데

서버에 소스를 올리고 실행을 하니 에러가 납니다.

 

 

에러내용을 구글링도 해보고 CI포럼에서도 조회해봐도 제가 적용할만한 사항이없더라구요

 

db커넥트 문제라면 다른 함수에서 db를 검색해서 사용할때도 에러가 나야하는데 다른부분은 잘되고있고...

답을 모르겠습니다..

 다음글 $this->load 궁금합니다. (3)
 이전글 여러 테이블에 영향을 미치는 작업을 할 때 (2)

댓글

한대승(불의회상) / 2017/01/23 13:02:17 / 추천 0

쿼리 실행이 되지 않아 넘결줄 결과가 없는 겁니다.

$query = $this->db->get();
echo $this->db->last_query();

쿼리를 출력해서 확인해 보세요.

니로 / 2017/01/23 13:13:02 / 추천 0
한대승/ 물론 라스트쿼리도 찍어봤습니다만 정상적으로 출력이되고 직접 db툴로 쿼리실행을 해봐도 이상없습니다.
니로 / 2017/01/23 13:14:05 / 추천 0

쿼리가 실행되지 않는다면 로컬에서도 동일해야하는데 로컬에서는 실행이 잘되고있습니다. (동일db사용)

서버에 소스를 업로드하고 네임서버를 동록해서 해당 도메인으로 들어가서 실행했을대가 문제가 되고있습니다..

한대승(불의회상) / 2017/01/23 14:33:55 / 추천 0
@니로 DB 접속이 안된다는 말씀이신가요?
니로 / 2017/01/23 14:43:33 / 추천 0

@한대승(불의회상) 접속은 되구욤,, 쿼리결과가 안나옵니다.  에러내용 보시면 아시겠지만

Fatal error: Call to a member function num_rows() on a non-object in /home/shop2/application/models/admin/admin_main_model.php on line 108 이렇게 나옵니다

한대승(불의회상) / 2017/01/23 14:51:21 / 추천 0

@니로 네 에러 내용보는데로 결과 값에대한 object가 넘어 오지 않았군요.

올려주신 코드에도 아무 이상이 없고 DB 접속도 잘된다면 안되는 이유가 무었인지 현재 상태로는 알 방법이 없습니다.

last_query로 출력된 sql 코드를 $this->db->query()에 집어넣고 실행 시켜보세요.

니로 / 2017/01/23 15:09:25 / 추천 0


$sql = $this->db->last_query();
$query = $this->db->query($sql);

        if($query->num_rows() > 0)
        {
            $data = $query->row_array();
        }
이렇게 하면 실행은 됩니다. 근데 이렇게 하니 $this->db->get()은 빼야하더라구요.

이렇게 했을때 같은 모델안에 다른  함수안에 있는$this->db->select 에서 앞전에 사용했던 select구문이 합쳐져서 나오게 되어버립니다.... 도대체 해결방법이 뭔지 모르겠고..

궁금한건 기존방식대로 잘되었는데 왜 얘는 안된느지 궁금하네요 ;

니로 / 2017/01/24 10:04:55 / 추천 0
답이 없는상황인가요
니로 / 2017/01/24 11:10:55 / 추천 0

this->db 를 쿼리 실행후에 찍어봤는데요

 

CI_DB_oci8_driver Object
(
    [dbdriver] => oci8
    [_escape_char] => 
    [_like_escape_str] => 
    [_like_escape_chr] => 
    [_count_string] => SELECT COUNT(1) AS 
    [_random_keyword] =>  ASC
    [_commit] => 32
    [stmt_id] => 
    [curs_id] => 
    [limit_used] => 
    [ar_select] => Array
        (
            [0] => count(CON_ID) COUNT
        )

    [ar_distinct] => 
    [ar_from] => Array
        (
            [0] => EPS_CON_COUNT
        )

    [ar_join] => Array
        (
        )

    [ar_where] => Array
        (
            [0] => DAYDATE >= TO_DATE('2017-01-24','YYYY-MM-DD')
            [1] => AND DAYDATE < TO_DATE('2017-01-25','YYYY-MM-DD')
        )

    [ar_like] => Array
        (
        )

    [ar_groupby] => Array
        (
        )

    [ar_having] => Array
        (
        )

    [ar_keys] => Array
        (
        )

    [ar_limit] => 
    [ar_offset] => 
    [ar_order] => 
    [ar_orderby] => Array
        (
        )

    [ar_set] => Array
        (
        )

    [ar_wherein] => Array
        (
        )

    [ar_aliased_tables] => Array
        (
        )

    [ar_store_array] => Array
        (
        )

    [ar_caching] => 
    [ar_cache_exists] => Array
        (
        )

    [ar_cache_select] => Array
        (
        )

    [ar_cache_from] => Array
        (
        )

    [ar_cache_join] => Array
        (
        )

    [ar_cache_where] => Array
        (
        )

    [ar_cache_like] => Array
        (
        )

    [ar_cache_groupby] => Array
        (
        )

    [ar_cache_having] => Array
        (
        )

    [ar_cache_orderby] => Array
        (
        )

    [ar_cache_set] => Array
        (
        )

    [ar_no_escape] => Array
        (
            [0] => 
        )

    [ar_cache_no_escape] => Array
        (
        )

    [username] => ENTIN
    [password] => PCM31688WPZ
    [hostname] => (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 222.122.20.163)(PORT = 1521)))(CONNECT_DATA =(SID = ORCL)(SERVICE_NAME = ORCL)))
    [database] => 
    [dbprefix] => 
    [char_set] => utf-8
    [dbcollat] => utf8_general_ci
    [autoinit] => 1
    [swap_pre] => 
    [port] => 
    [pconnect] => 
    [conn_id] => Resource id #66
    [result_id] => 1
    [db_debug] => 
    [benchmark] => 0.068056106567383
    [query_count] => 6
    [bind_marker] => ?
    [save_queries] => 1
    [queries] => Array
        (
            [0] => SELECT *
FROM EPS_CI_SESSIONS
WHERE session_id =  '7f4ce143df08a14cf3d86710f5930bbe'
            [1] => DELETE FROM EPS_CI_SESSIONS
WHERE last_activity < 1485217687
            [2] => SELECT sum(I.GRANDTOTAL) GRANDTOTAL, count(DISTINCT(S.OIN_ID)) CNT
FROM SAL_OIN S
JOIN SAL_OINITEM I ON S.OIN_ID = I.OIN_ID
WHERE S.DATAGUBUN =  'EPS'
AND S.WORKDATE >= TO_DATE('2017-01-24','YYYY-MM-DD')
AND S.WORKDATE < TO_DATE('2017-01-24','YYYY-MM-DD')+1
            [3] => SELECT count(MEMBER_ID) M_COUNT
FROM EPS_MEMBER
WHERE CREATED >= TO_DATE('2017-01-24','YYYY-MM-DD')
AND CREATED < TO_DATE('2017-01-24','YYYY-MM-DD')+1
            [4] => SELECT count(BOARD_ID) PQ_COUNT
FROM EPS_BOARDS_ETC
WHERE CREATED >= TO_DATE('2017-01-24','YYYY-MM-DD')
AND CREATED < TO_DATE('2017-01-24','YYYY-MM-DD')+1
            [5] => SELECT count(ESTI_ID) E_COUNT
FROM SAL_ESTI
WHERE WORKDATE >= TO_DATE('2017-01-24','YYYY-MM-DD')
AND WORKDATE < TO_DATE('2017-01-24','YYYY-MM-DD')+1
        )

    [query_times] => Array
        (
            [0] => 0.0080330371856689
            [1] => 0.0084400177001953
            [2] => 0.015005826950073
            [3] => 0.013595104217529
            [4] => 0.012262105941772
            [5] => 0.010720014572144
        )

    [data_cache] => Array
        (
        )

    [trans_enabled] => 1
    [trans_strict] => 1
    [_trans_depth] => 0
    [_trans_status] => 1
    [cache_on] => 
    [cachedir] => 
    [cache_autodel] => 
    [CACHE] => 
    [_protect_identifiers] => 1
    [_reserved_identifiers] => Array
        (
            [0] => *
        )

    [stricton] => 
)

Fatal error: Call to a member function num_rows() on a non-object in /home/shop2/application/models/admin/admin_main_model.php on line 134

 

이렇게 나오는디..

CIefii / 2017/02/03 14:28:40 / 추천 0

db에 해당하는 데이터가 실제 존재하는지 알아야겠는데요~ 조건에 맞는 로우가 없어서 count를 못하는게 아닌지.. 

그리고 db connection정보가 댓글에 고스란히 보여지네욤 ㅠㅠ

한대승(불의회상) / 2017/02/03 15:43:27 / 추천 0
방화벽으로 막아두셨겠죠... ㅡㅡ;;