CodeIgniter User Guide Version 2.1.0


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

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

자동연결

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

application/config/autoload.php

수동연결

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

$this->load->database();

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

사용 가능한 파라미터들

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

데이터베이스 수동연결

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

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

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

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

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

$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$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)
각 값에 대한 상세정보는 데이터베이스 설정 페이지를 참고하세요 .

데이터베이스 연결값을 아래와 같은 형식의 문자열로 전달할수도 있습니다. 아래와같은 형식을 DSN(Data Source Name)이라고 합니다:

$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);

여러 데이터베이스에 연결하기

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

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

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

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

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

사용하는것이 좋습니다.:

 

일반적인방법:

$this->db->query();
$this->db->result();
객체이름을 이용한 방법 :

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

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

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

$this->db->reconnect();

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

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

$this->db->close();