-
[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에서 데이터베이스 쿼리 생성 방법에 대해 알아보도록 하겠습니다.
'프로그래밍 > CodeIgniter' 카테고리의 다른 글
[CodeIgniter] 데이터베이스(Database) 쿼리 빌더 - WHERE (0) 2018.10.25 [CodeIgniter] 데이터베이스(Database) 쿼리 빌더 - SELECT (0) 2018.09.18 [CodeIgniter] 데이터베이스(Database) 쿼리 실행 및 결과 생성 (0) 2018.05.29 [CodeIgniter] 다수의 데이터베이스(Database) 사용하기 (1) 2018.05.27 [CodeIgniter] 데이터베이스(Database) 시작하기 (2) 2018.04.22