Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Конфигурация базы данных

CodeIgniter имеет конфигурационный файл, который позволяет вам сохранять параметры для соединения с вашей базой данных (имя пользователя, пароль, имя базы и тому подобное). Конфигурационный файл находится в `application/config/database.php`. Вы также можете можете устанавливать параметры соединения с базой данных для специфического окружения, размещаяя database.php в соответствующей окружению директории.

Настройки конфигурации хранятся в многомерном массиве, по этому прототипу:

`$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['default']['swap_pre'] = "";
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;`

Смысл использования многомерного массива в том, что это позволяет вам опционально хранить множественные наборы настроек соединения. Если, к примеру, вы используете множественные окружения (разработка, эксплуатация, тестирование и так далее) под единственной инсталяцией, вы можете создать группы соединений для каждого, и затем переключаться между группами, как вам необходимо. Например, для того, чтобы установить «тестовое» окружение, сделайте так:

`$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
$db['test']['swap_pre'] = "";
$db['test']['autoinit'] = TRUE;
$db['test']['stricton'] = FALSE;`

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

`$active_group = "test";`

Примечание: имя "test" произвольное. Это может быть все что вы захотите. По умолчанию мы использовали слово "default" для первичного соединения, но и оно также может быть переименовано, в соответствии с вашим проектом.

### Active Record

Класс Active Record глобально включается или выключается установкой переменной $active_record в конфигурации базы данных в TRUE или FALSE (boolean). Если вы не используете класс Active Record, установка переменной в FALSE позволит высвободить некоторые ресурсы, используемые при иниализации и работе класса БД.

`$active_record = TRUE;`

Примечание: некоторые классы CodeIgniter, такие как Сессии (Sessions Class) требуют включенный Active Record для некоторых функциональностей.

### Объяснение значений:

- hostname - Имя хоста сервера БД. Обычно "localhost".
- username - Имя пользователя для соединения с БД.
- password - Пароль.
- database - Имя БД, к которой вы подключаетесь.
- dbdriver - Тип БД. Например: mysql, postgres, odbc и т.д. Должно указываться в нижнем регистре.
- dbprefix - Опциональный префик, который добавляется к имени таблиц при использовании запросов Active Record. Это позволяет использовать множественные инсталяции CodeIgniter, разделяющие одну БД.
- pconnect - TRUE/FALSE (boolean) - Использовать ли постоянное соединение.
- db_debug - TRUE/FALSE (boolean) - Показывать ли ошибки БД.
- cache_on - TRUE/FALSE (boolean) - Включено ли кеширование запросов БД. Смотрите Класс кеширования БД.
- cachedir - Абсолютный серверный путь к директории кешей БД.
- char_set - Кодировка для связи с БД.
- dbcollat - Кодировка сравнения, используемая с БД.

  Примечание: Для СУБД MySQL and MySQLi, эта установка используется только при бэкапе, если ваш сервер работает под PHP < 5.2.3 or MySQL < 5.0.7 (и при создании таблиц посредством DB Forge) Существует несовместимость в PHP c mysql_real_escape_string(), которая сделает ваш сайт уязвымим к SQL injection, если вы используете многобайтные кодировки и работаете с версиями ниже указанных. Для сайтов, использующих Latin-1 или UTF-8, кодировки БД и сравнения значения не имеют.

- swap_pre - Табличный префикс по умолчанию, который будет переключаться с dbprefix. Это полезно для распространяемых приложений, где вы можете запускать запросы вручную, и нужно представлять возможность настройки префикса конечному пользователю.
- autoinit - Подключать ли БД автоматически при загрузке класса БД. Если установить в FALSE, соединение будет устанавливаться только при первом запросе.
- stricton - TRUE/FALSE (boolean) - Вне зависимости от манеры обычного использования "Строгого режима", хорошо иметь "Строгий режим" включенным на время разработки.
- port - Номер порта БД. Для использования этого значения добавьте строку в массив конфигурации БД. `$db['default']['port'] = 5432;`

Примечание: В зависимости от платформы БД, которую вы используете (MySQL, Postgres и т.д.), не все параметры необходимы. Например, при использовании SQLite не нужно указывать имя пользователя или пароль, и вместо имени БД нужно указать просто путь к файлу с БД. Информация выше предполагает, что вы используете MySQL.

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter