Конфигурация базы данных
CodeIgniter имеет конфигурационный файл, который позволяет вам сохранять настройки соединения (username, password, database name и т.д.) Конфигурационный файл находится по пути:
application/config/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 в файле конфигурации базы данных. Если вы не используете класс Active Record, установка в FALSE позволит вам сэкономить некоторые ресурсы при инициализации класса базы данных.
$active_record = TRUE;
Примечание: некоторые классы CodeIgniter, например Sessions, нуждаются в Active Record.
Объяснение значений:
- hostname — Имя хоста сервера базы данных. Обычно "localhost".
- username — Имя пользователя, соединяющегося с базой данных.
- password — Пароль, использующийся для соединения с базой данных.
- database — Имя базы данных.
- dbdriver — Тип базы данных, например: mysql, postgres, odbc и т.д. Должен быть указан в нижнем регистре.
- dbprefix — Опциональный префикс для таблиц, который добавляется к имени таблицы при использовании запросов Active Record. Это позволяет использовать несколько инсталяций CodeIgnter с одной БД.
- pconnect — TRUE/FALSE (boolean) — использовать ли постоянное соединение.
- db_debug — TRUE/FALSE (boolean) — отображать ли ошибки БД.
- cache_on — TRUE/FALSE (boolean) — включено ли кеширование, смотрите также класс Database Caching.
- cachedir — Абсолютный серверный путь к директории кешей.
- char_set — Используемая кодировка при соединении.
- dbcollat — Кодировка сравнения.
- swap_pre — Префикс таблицы по умолчанию, который переключается dbprefix. Это полезно для выпускаемых приложений, которые могут еще использовать вручную написанные запросы, но необходимо предусмотреть использование префикса для конечного пользователя.
- autoinit — Использовать или нет автоматическую инициализацию БД.
- stricton — TRUE/FALSE (boolean) — Использовать ли "Strict Mode" (строгий режим) соединений, удобно для обеспечения строгого SQL при разработке приложения.
- port — Номер порта базы данных.
$db['default']['port'] = 5432;
Примечание: В зависимости от используемой платформы БД (MySQL, Postgres и т.п.), не все указанные выше значения необходимы. Например, при использовании SQLite вы не должны передавать имя пользователя или пароль, а имя базы данных указывается просто как путь. Информация выше подразумевает использование MySQL.