데이터베이스 연결 Connecting to your Database

데이터베이스연결에는 두 가지 방법이 있습니다:

자동연결 Automatically Connecting

자동연결(“auto connect”) 설정은 각 페이지가 로드될 때 자동으로 데이터베이스 클래스를 로드합니다. 자동연결을 사용하기 위해서는 아래 파일에서 배열에 database 를 추가합니다:

application/config/autoload.php

수동연결 Manually Connecting

몇몇 페이지에서만 데이터베이스 연결을 사용한다면, 아래의 코드를 해당페이지에서 데이터베이스를 사용하는 부분에 삽입하세요 .혹은 해당페이지의 생성자에 추가하셔도 됩니다. 생성자에 추가하면 클래스내의 아무 곳에서나 사용할 수 있게 됩니다.

$this->load->database();

위 함수에서 아무런 파라미터를 전달하지 않으면 데이터베이스 설정파일(config file)에 설정하신 그룹으로 연결할 것입니다. 대부분의 사람들이 이 방법을 선호합니다.

사용 가능한 파라미터들 Available Parameters

  1. 데이터베이스 연결값은 배열 혹은 연결문자열(DSN string)로 설정할 수 있습니다.
  2. TRUE/FALSE (boolean). 연결에 대한 식별자(ID)를 리턴할지 말지를 결정 (아래쪽의 다중 데이터베이스 연결 부분을 보세요).
  3. TRUE/FALSE (boolean). 액티브레코드 클래스를 활성화할지 여부를 결정. FALSE 가 기본값임.

데이터베이스 수동연결 Manually Connecting to a Database

첫 번째 파라미터는 데이터베이스 설정파일에 설정한 그룹 이름을 지정할 수 있습니다. 아니면 설정파일에 설정하지 않은 연결값을 설정할 수도 있습니다. 예제:

데이터베이스 설정파일에 지정한 그룹명을 이용하여 연결하는 방법:

$this->load->database('group_name');

group_name 부분이 설정파일에 설정된 그룹 이름입니다.

아래와 같이 배열로 설정하여 연결할 수도 있습니다:

$config['hostname'] = 'localhost';
$config['username'] = 'myusername';
$config['password'] = 'mypassword';
$config['database'] = 'mydatabase';
$config['dbdriver'] = 'mysqli';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = '';
$config['char_set'] = 'utf8';
$config['dbcollat'] = 'utf8_general_ci';
$this->load->database($config);

각 값에 대한 상세정보는 데이터베이스 설정 페이지를 참고하세요.

Note

PDO 드라이버에 대해서는, ‘hostname’ 과 ‘database’: 대신에 $config[‘dsn’] 세팅을 사용해야 합니다.


$config[‘dsn’] = ‘mysql:host=localhost;dbname=mydatabase’;

또는 데이터 소스 이름으로 데이터베이스 값을 제출할 수 있습니다. DSN 는 이 프로토타입을 가지고 있어야 합니다:

$dsn = 'dbdriver://username:password@hostname/database';
$this->load->database($dsn);

DSN을 통하여 기본 설정된 연결값을 재정의( override) 하려면 쿼리스트링(html 에서 get 형식의 값)처럼 덧붙여 주세요.

$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
$this->load->database($dsn);

여러 데이터베이스에 연결하기 Connecting to Multiple Databases

하나 이상의 데이터베이스에 동시에 연결하려면 아래와 같이 합니다:

$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);

Note: “group_one” 과 “group_two” 부분을 여러분이 연결하고 싶은 그룹명으로 바꾸어주세요 .( 아니면 위에서 설명한 것처럼 연결값을 넘겨줘도 됩니다.).

두 번째 파라미터를 TRUE (boolean) 로 하시면 함수는 데이터베이스 객체를 리턴합니다.

Note

이방식으로 연결하면 일반적인 디비사용방식이 아니라 객체이름을 이용하여 데이터베이스를 사용하는 것이 좋습니다:


$this->db->query();
$this->db->result();
etc...

이렇게 사용 가능합니다:

$DB1->query();
$DB1->result();
etc...

Note

만약에 같은 디비연결에서 다른 데이터베이스를 사용하고자 한다면, 별도의 데이터베이스 환경을 생성할 필요가 없습니다. 필요할 때에 다른 데이터베이스로 변경하면 됩니다:

$this->db->db_select($database2_name);

재연결/ 연결유지 Reconnecting / Keeping the Connection Alive

대용량처리 중에(예를 들어 이미지 등) db 연결시간 초과가 일어날 가능성이 있다면 다음 쿼리를 날리기 전에 reconnect() 함수를 사용하시면, 연결이 끊어졌을 경우 다시 연결을 맺어주며, 그렇지 않은경우는 연결을 유지시켜줍니다.

$this->db->reconnect();

수동으로 연결 닫기 Manually closing the Connection

CodeIgniter가 자동으로 db연결을 닫아주기는 하지만, 아래 함수를 통해 직접 연결을 닫을 수 있습니다.

$this->db->close();