CI 묻고 답하기

제목 테이블 전체 컬럼에 LIKE 검색
글쓴이 두봉 작성시각 2015/11/09 02:54:37
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 17867   RSS
​안녕하세요
테이블 전체컬럼에 LIKE검색하는 부분에 있어서 궁금한게 있어서 글을 올립니다.
아래와 같이 테이블 메타데이터를 얻어와서 필드명에 각각 like검색을 해봤습니다.
쿼리 로그를 보니 정상적으로 검색을 실행했는데..
결과를 출력해보니 쿼리 결과 뿐만이 아닌 다른 데이터가 함께 출력되는것 같네요
왜 이런 결과가 나오는것인지 모르겠네요
결과수는 정상적인데 정작 얻고자 하는 검색결과를 얻을수가 없네요;;
조언을 주시면 정말 감사하구요 힌트라도 좋습니다.
[컨트롤러]
public function search_data(){
    $this -> load -> model('search_m');
    //검색 키워드를 가져옴
    $keyword = $this -> input -> post('keyword', TRUE);
    $user_column = array('id', 'name');
    $data['result'] = $this -> search_m -> search_data(TABLE_USER_INFO, $user_column, $keyword);

    $data['keyword'] = $keyword;
    $data['title'] = 'Search Result';
    $this -> load -> view('user_search_result',$data);
}
[모델]
function search_data($table_name, $colomn, $keyword){
    $fields = $this->db->list_fields($table_name);
    $this->db->select($colomn);
    $this->db->from($table_name);
    foreach($fields as $field){
        $this->db->or_like($field, $keyword);
    }
    return $this->db->get();
}

[뷰]
echo 'SEARCH_RESULT';
if ( count($result) > 0) {
    echo 'print_r($result, 1) . ''; 
}

[결과]
CI_DB_mysqli_result Object
(
    [conn_id] => mysqli Object
        (
            [affected_rows] => 3
            [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $
            [client_version] => 50011
            [connect_errno] => 0
            [connect_error] => 
            [errno] => 0
            [error] => 
            [error_list] => Array
                (
                )

            [field_count] => 2
            [host_info] => 192.168.203.96 via TCP/IP
            [info] => 
            [insert_id] => 0
            [server_info] => 5.6.26
            [server_version] => 50626
            [stat] => Uptime: 591  Threads: 1  Questions: 227  Slow queries: 0  Opens: 96  Flush tables: 1  Open tables: 89  Queries per second avg: 0.384
            [sqlstate] => 00000
            [protocol_version] => 10
            [thread_id] => 20
            [warning_count] => 0
        )

    [result_id] => mysqli_result Object
        (
            [current_field] => 0
            [field_count] => 2
            [lengths] => 
            [num_rows] => 3
            [type] => 0
        )

    [result_array] => Array
        (
        )

    [result_object] => Array
        (
        )

    [custom_result_object] => Array
        (
        )

    [current_row] => 0
    [num_rows] => 3
    [row_data] => 
 다음글 PHP5.5 + CI.3.0.3 (3)
 이전글 ajax json 문의좀 드릴께요 (3)

댓글

두봉 / 2015/11/09 02:57:38 / 추천 0
뷰출력할때 pre태그를 사용해서 출력하는걸 그대로 붙여넣었더니 글이 이상하게 작성이 되는군요;;
그리고 사진올리려다 실패해서 직접 결과 출력 페이지를 붙여넣었습니다
kaido / 2015/11/09 09:10:09 / 추천 0
쿼리가 예상과 다르게 이상하다 싶으면 

$this->output->enable_profiler(true);

일단 찍어서 실제 쿼리가 어떻게 찍히셨는지 확인 해 보시면 이상한 점을 찾으 실수 있습니다.

경험상 or_like 쪽에 논리적 오류 부분이 있었던 걸로...
수야디벨 / 2015/11/09 09:11:56 / 추천 0
음.. 설마 .. 

$this->db->get() 만 하면 원하는 데이터가 나오지 않고 실제 데이터 배열로 리턴 받으려면 

$this->db->get()->row() 또는 result() 또는 row_array() 또는 result_array()를 사용해서 찍어보시면 됩니다 .

http://codeigniter-kr.org/user_guide_2.1.0/database/active_record.html
두봉 / 2015/11/09 09:49:15 / 추천 0
//kaido
조언 감사드립니다.
kaido님 덕분에 프로파일러 사용을 배우게 되었네요^^
//수야디벨
알려주신 방법대로하니 result()를 하니 정확히 나오는군요
답변에 감사드립니다.