CodeIgniter User Guide Version 2.0.0


Соединение с вашей базой данных

Есть два способа соединиться с базой данных:

Автоматическое соединение

Опция автоматического соединения загрузит и инициализирует класс базы данных при каждой загрузке страницы. Для того, чтобы включить "автосоединение", добавьте слово database в массив библиотек, как показано в следующем файле:

application/config/autoload.php

Ручное соединение

Если только некоторые из ваших страниц требуют соединения с базой данных, вы можете вручную соединяться с ней, используя приведенный ниже код. При этом, класс базы данных будет доступен глобально в вашем конструкторе.

$this->load->database();

Если в функция выше не содержит дополнительной информации в первом параметре, будет загружена группа настроек, указанная по умолчанию. В большинстве случаев это предпочтительный способ использования.

Доступные параметры

  1. Параметры соединения с БД, переданные массивом или строкой DSN.
  2. TRUE/FALSE (boolean). Возвращать ли ID соединения (см. "Соединение с несколькими БД" ниже).
  3. TRUE/FALSE (boolean). Включать ли класс Active Record. Установлено в TRUE по умолчанию.

Ручное соединение с базой данных

Первый параметр этой функции может быть использован опционально для указания конкретной группы настроек БД из конфигурационного файла, или вы можете передать параметры, которые не указаны в файле конфигурации. Примеры:

Чтобы выбрать конкретную группу из файла конфигурации, вы можете сделать так:

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

Для информации по каждому значению смотрите конфигурацию БД.

Или вы можеет передать значения как Data Source Name. DSNs должны соответствовать этому прототипу:

$dsn = 'dbdriver://username:password@hostname/database';

$this->load->database($dsn);

Для того, чтобы переписать значения по умолчанию при соединении строкой DSN, добавьте переменные конфигурации в строку запроса.

$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();
etc...

Вы будете использовать:

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

Пересоединение / Удержание соединения

Если допустимое время ожидания сервера базы данных превышено во время выполнения тяжелых или длительных запросов, вы можете пинговать сервер, используя метод reconnect() перед отправкой дальнейших запросов, которые помогут удержать соединение или восстановить его.

$this->db->reconnect();

Ручное закрытие соединения

Хотя CodeIgniter разумно заботится о закрытии вашего соединения, вы также можете вручную закрыть его.

$this->db->close();