데이터베이스 연결

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

자동 연결

“자동 연결” 기능은 모든 페이지 로드 시 데이터베이스 클래스를 로드하고 인스턴스화합니다. “자동 연결”을 활성화하려면 다음 파일에 표시된 대로 library 배열에 database라는 단어를 추가하세요:

application/config/autoload.php

수동 연결

일부 페이지에만 데이터베이스 연결이 필요한 경우 필요한 함수 내 또는 클래스 생성자에 다음 코드 줄을 추가하여 데이터베이스에 수동으로 연결하면 해당 클래스에서 전역으로 데이터베이스를 사용할 수 있습니다.

$this->load->database();

위 함수의 첫 번째 매개변수에 정보가 없으면 database config 파일에 지정된 그룹에 연결됩니다. 대부분의 사람들에게 이것이 선호되는 사용 방법입니다.

사용 가능한 매개변수

  1. 배열 또는 DSN 문자열로 전달되는 데이터베이스 연결 값.

  2. TRUE/FALSE (불리언). 연결 ID를 반환할지 여부 (아래 여러 데이터베이스 연결 참조).

  3. TRUE/FALSE (불리언). Query Builder 클래스를 활성화할지 여부. 기본값은 TRUE입니다.

데이터베이스에 수동 연결

이 함수의 첫 번째 매개변수는 선택적으로 config 파일에서 특정 데이터베이스 그룹을 지정하는 데 사용할 수 있으며, config 파일에 지정되지 않은 데이터베이스에 대한 연결 값을 제출할 수도 있습니다. 예시:

config 파일에서 특정 그룹을 선택하려면 다음과 같이 합니다:

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

여기서 group_name은 config 파일의 연결 그룹 이름입니다.

원하는 데이터베이스에 수동으로 연결하려면 값의 배열을 전달할 수 있습니다:

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

각 값에 대한 정보는 설정 페이지를 참조하세요.

참고

PDO 드라이버의 경우 ‘hostname’과 ‘database’ 대신 $config[‘dsn’] 설정을 사용해야 합니다:


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

또는 데이터베이스 값을 Data Source Name으로 제출할 수 있습니다. DSN은 다음 프로토타입을 가져야 합니다:

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

DSN 문자열로 연결할 때 기본 config 값을 재정의하려면 config 변수를 쿼리 문자열로 추가하세요.

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

참고: “group_one”과 “group_two”를 연결하는 특정 그룹 이름으로 변경하세요 (또는 위에 표시된 대로 연결 값을 전달할 수 있습니다).

두 번째 매개변수를 TRUE(불리언)로 설정하면 함수가 데이터베이스 오브젝트를 반환합니다.

참고

이 방식으로 연결하면 이 가이드 전반에 걸쳐 사용된 구문 대신 오브젝트 이름을 사용하여 명령을 실행합니다. 즉, 다음과 같이 명령을 실행하는 대신:


$this->db->query();
$this->db->result();
등…

대신 다음을 사용합니다:

$DB1->query();
$DB1->result();
등…

참고

동일한 연결에서 다른 데이터베이스만 사용해야 하는 경우 별도의 데이터베이스 설정을 만들 필요가 없습니다. 필요할 때 다음과 같이 다른 데이터베이스로 전환할 수 있습니다:

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

재연결 / 연결 유지

무거운 PHP 작업(예: 이미지 처리)을 수행하는 동안 데이터베이스 서버의 유휴 타임아웃이 초과되면 추가 쿼리를 전송하기 전에 reconnect() 메소드를 사용하여 서버에 핑을 보내는 것을 고려해야 합니다. 이렇게 하면 연결을 유지하거나 재설정할 수 있습니다.

$this->db->reconnect();

연결 수동 닫기

CodeIgniter가 데이터베이스 연결을 닫는 것을 지능적으로 처리하지만 연결을 명시적으로 닫을 수 있습니다.

$this->db->close();