ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CodeIgniter] 데이터베이스(Database) 쿼리 함수
    프로그래밍/CodeIgniter 2018. 8. 19. 18:04

    ▶CodeIgniter 데이터베이스(Database) 쿼리 함수



    ▶설명


    데이터베이스를 사용할 때 CodeIgniter에서 사용하는 유용한 헬퍼(Helper) 함수들에 대해 간단히 작성하도록 하겠습니다.

    자세한 내용은 아래를 참고하시기 바랍니다.


    ▶쿼리 실행 정보



    insert_id() 함수

    예시

    $this->db->insert_id();


    특징

    • Insert 쿼리로 데이터베이스에 삽입한 아이디 번호를 반환합니다.
    • 아이디 번호는 Primary Key이고 Auto Increment 속성인 경우에 해당합니다. (그 외에 동작하는  경우는 자세히 설명되어 있지 않아 알 수 없습니다.)


    affected_rows() 함수

    예시

    $this->db->affected_rows();


    특징

    • Insert, Update 쿼리로 데이터베이스에 쓰는 형태의 쿼리를 수행할 때 적용된 결과에 열(row) 수를 반환해줍니다.


    참고

    MySQL에서 "DELETE FROM TABLE" 쿼리에 이 함수를 사용하면 0을 리턴하는 경우가 발생한다고 합니다.

    데이터베이스 클래스는 제대로 된 열(row) 수를 반환하는 방법을 핵(Hack)의 형태로 제공한다고 합니다.

    기본값은 핵(Hack)이 활성화된 상태이나 데이터베이스 드라이버 파일에서 비활성으로 바꿀 수 있다고 합니다.


    만약에 비활성화하고 싶으신 경우에는 아래의 파일에서 해당 플래그 값을 비활성하시면 됩니다.


    system/database/mysql_driver.php


    // public $delete_hack = TRUE;
    public $delete_hack = FALSE;


    last_query() 함수

    예시

    echo $this->db->last_query();
    // SELECT * FROM sometable...


    특징

    • 마지막으로 실행한 쿼리 문자열을 반환합니다.
    • 쿼리 실행 결과가 아닙니다!


    참고

    데이터베이스 환경설정에서 save_queries 세팅을 비활성화함으로 이 함수를 쓸모 없게 할 수 있습니다.

    비활성화하고 싶으신 경우 아래를 참고하시면 됩니다.


    application/config/database.php


    $db['default'] = array(
        'dsn' => '',
        'hostname' => 'localhost',
        'username' => 'yourname',
        'password' => 'yourpassword',
        'database' => 'yourdb',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
    //  'save_queries' => TRUE
        'save_queries' => FALSE
    );


    ▶데이터베이스에 관한 정보



    count_all() 함수

    예시

    echo $this->db->count_all('my_table');
    // 40


    특징

    • 특정 테이블의 열(row) 수를 반환합니다.
    • 반환값은 정수(integer)입니다.
    • 첫 번째 파라미터로 테이블 이름을 전달해야합니다.


    platform() 함수

    예시

    $this->db->platform();


    특징

    • 현재 사용 중인 데이터베이스 플랫폼(MySQL, MS SQL, Oracle, Etc...)을 반환해줍니다.


    version() 함수

    예시

    $this->db->version();


    특징

    • 현재 사용 중인 데이터베이스 버전을 반환해줍니다.


    ▶쿼리를 쉽게 만들어주는 함수



    insert_string() 함수

    예시

    $data = array('name' => 'Edward', 'email' => 'Edward@example.com', 'url' => 'example.com');
    $str = $this->db->insert_string('table_name', $data);
    // str : INSERT INTO `table_name` (`name`, `email`, `url`) VALUES ('Edward', 'Edward@example.com', 'example.com')


    특징

    • Insert 쿼리문을 자동으로 만들어서 반환해줍니다.
    • 첫 번째 파라미터는 테이블 이름이며, 두 번째 파라미터는 입력될 데이터의 연관 배열입니다.
    • 값은 자동으로 이스케이프 되어서, 안전한 쿼리를 제공합니다.


    update_string() 함수

    예시

    $data = array('name' => 'Edward', 'email' => 'Edward@example.com', 'url' => 'example.com');
    $where = "author_id = 1 AND status = 'active'";
    $str = $this->db->insert_string('table_name', $data, $where);
    // str : UPDATE `table_name` SET `name` = 'Edward', `email` = 'Edward@example.com', `url` = 'example.com' WHERE `author_id` = 1 AND `status` = 'active'


    특징

    • Update 쿼리문을 자동으로 만들어서 반환해줍니다.
    • 첫 번째 파라미터는 테이블 이름이며, 두 번째 파라미터는 입력될 데이터의 연관 배열이고, 세 번째 파라미터는 where절이 들어갑니다.
    • 값은 자동으로 이스케이프 되어서, 안전한 쿼리를 제공합니다.


    참고

    만약에 where에 조건이 모두 'AND'라면 아래와 같이 사용해도 동일한 결과를 얻을 수 있습니다.

    $data = array('name' => 'Edward', 'email' => 'Edward@example.com', 'url' => 'example.com');
    $where = array('author_id' => 1, 'status' => 'active');
    $str = $this->db->insert_string('table_name', $data, $where);
    // str : UPDATE `table_name` SET `name` = 'Edward', `email` = 'Edward@example.com', `url` = 'example.com' WHERE `author_id` = 1 AND `status` = 'active'


    ▶마치며


    이번에는 데이터베이스를 사용하는데 편리한 데이터베이스 헬퍼 함수들 알아봤습니다.

    다음에는 CodeIgniter에서 데이터베이스 쿼리 생성 방법에 대해 알아보도록 하겠습니다.


    댓글

Designed by Tistory.