Фреймворк CodeIgniter Version 2.1.3


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

Есть два способа соединения с БД.

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

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

application/config/autoload.php

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

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

$this->load->database();

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

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

  1. Параметры соединения с БД, переданные в массиве или DSN-строкой.
  2. TRUE/FALSE (boolean). Возвращать ли идентификатор соединения (смотрите ниже раздел «Соединение с несколькими БД»).
  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. DSN должны соответствовать этому прототипу:

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

делайте так:

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

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

Если время ожидания сервера БД превышено, в то время пока вы делали какие-то тяжелые процедуры (обработка изображения, например), вы должны отправить пинг на сервер, используя метод reconnect(), перед тем, как отправлять какие-то запросы. Это поможет вам изящно пересоединиться или удержать соединение.

$this->db->reconnect();

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

Хотя CodeIgniter интеллигентно заботиться о закрытии соединений, вы все же можете явно закрыть его.

$this->db->close();
    Поддержать сайт на родительском проекте КГБ