데이터베이스연결

데이터베이스에연결

기본그룹에연결

필요한 함수나 클래스 생성자에 이 코드 줄을 추가하여 데이터베이스에 연결할 수 있습니다. 이렇게 하면 데이터베이스를 해당 클래스에서 전역적으로 사용할 수 있습니다.

$db = \Config\Database::connect();

위의 함수가 첫 번째 매개변수에 정보를 포함하지 않으면, 데이터베이스 구성 파일에 지정된 기본 그룹에 연결됩니다. 대부분의 사람들에게 이것이 선호하는 사용 방법입니다.

위의 줄을 단순히 래핑한 편의 메서드가 있으며 편의상 제공됩니다:

$db = db_connect();

사용가능한매개변수

\Config\Database::connect($group = null, bool $getShared = true):BaseConnection

  1. $group:데이터베이스그룹이름으로,구성클래스의속성이름과일치해야하는문자열입니다.기본값은Config\Database::$defaultGroup입니다.

  2. $getShared:true/false(boolean).공유연결을반환할지여부입니다(아래의여러데이터베이스에연결참조).

특정그룹에연결

이 함수의 첫 번째 매개변수는 구성 파일에서 특정 데이터베이스 그룹을 지정하는 데 선택적으로 사용할 수 있습니다. 예제:

구성 파일에서 특정 그룹을 선택하려면 다음과 같이 할 수 있습니다:

$db = \Config\Database::connect('group_name');

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

같은데이터베이스에대한여러연결

기본적으로connect()메서드는매번동일한데이터베이스연결인스턴스를반환합니다.같은데이터베이스에대한별도의연결이필요한경우두번째매개변수로false를보내십시오:

$db = \Config\Database::connect('group_name', false);

여러데이터베이스에연결

동시에두개이상의데이터베이스에연결해야하는경우다음과같이할수있습니다:

$db1 = \Config\Database::connect('group_one');
$db2 = \Config\Database::connect('group_two');

참고:group_onegroup_two라는단어를연결중인특정그룹이름으로변경하십시오.

참고

같은연결에서다른데이터베이스만사용하면되는경우별도의데이터베이스구성을만들필요가없습니다.필요할때다음과같이다른데이터베이스로전환할수있습니다:$db->setDatabase($database2_name);

사용자정의설정으로연결

그룹이름대신데이터베이스설정배열을전달하여사용자정의설정을사용하는연결을얻을수있습니다.전달된배열은구성파일에서그룹이정의된것과동일한형식이어야합니다:

$custom = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',
    'DBDriver' => 'MySQLi',
    'DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => true,
    'charset'  => 'utf8mb4',
    'DBCollat' => 'utf8mb4_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
];
$db = \Config\Database::connect($custom);

다시연결/연결유지

무거운PHP작업(예:이미지처리)을수행하는동안데이터베이스서버의유휴시간초과가초과되면,추가쿼리를보내기전에reconnect()메서드호출을고려해야합니다.이를통해연결을정상적으로유지하거나다시설정할수있습니다.

reconnect()메서드는서버핑확인을통해연결이여전히활성 상태인지확인합니다.연결이끊어진경우연결을닫았다다시설정합니다.

$db->reconnect();

수동으로연결종료

CodeIgniter가데이터베이스연결종료를지능적으로처리하지만,연결을명시적으로종료할수있습니다.

$db->close();