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

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

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

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

Некоторые драйверы баз данных (таких как, PDO, PostgreSQL, Oracle, ODBC) может потребоваться полная строка DSN. В этом случае вы должны использовать ‘dsn’ настройку конфигурации если вы используете базовое расширение драйвера PHP:

// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';

// Oracle
$db['default']['dsn'] = '//localhost/XE';

Примечание

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

Примечание

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

Можно также задать отказоустойчивые настройки для ситуации, когда основное соединение не удается подключиться по какой то причине. Это может быть достигнуто путем создания отказоустойчивого подключения:

$db['default']['failover'] = array(
                array(
                        'hostname' => 'localhost1',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                ),
                array(
                        'hostname' => 'localhost2',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                )
        );

Вы можете указать столько отказоустойчивых настроек, сколько вам нужно.

Причина почему мы используем многомерный массив, а не более простой, это возможность дополнительно сохранить несколько наборов значений подключения. Если, например, вы работаете в нескольких режимах разработки (development, production, test и т.д) в рамках одной установки, вы можете создать группу соединений для каждого и переключатся между группами по мере необходимости. Например, чтобы создать режим разработки “test” следует сделать следующее:

$db['test'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'compress' => FALSE,
        'encrypt' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

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

$active_group = 'test';

Примечание

Имя ‘test’ является произвольным. Оно может быть любым. По умолчанию мы используем слово “default” для основного подключения, но его тоже можно переименовать в что-то более актуальное для вашего проекта.

Построитель запросов 

Класс Построителя Запросов глобально включается или отключается путем установки переменной $query_builder в файле конфигурации базы данных в TRUE/FALSE (булев).Значение по умолчанию - TRUE. Если вы не используете класс построителя запросов, установка его в FALSE будет использовать меньше ресурсов, когда классы баз данных инициализируются.

$query_builder = TRUE;

Примечание

Некоторые классы CodeIgniter такие как Сессии требуют Построитель запросов, чтобы иметь возможность получить доступ к определенной функциональности.

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

Имя конфигурации Описание
dsn Строка DSN соединения (последовательность конфигурации: все-в-одном).
hostname Имя сервера базы данных. Обычно это ‘localhost’.
username Имя пользователя, используемое для подключения к базе данных.
password Пароль, используемый для подключения к базе данных.
database Имя базы данных, используемое для подключения к базе данных.
dbdriver Тип базы данных: mysqli, postgre, odbc, etc. Должны быть указаны в нижнем регистре.
dbprefix Дополнительный префикс, который будет добавлен к имени таблицы при выполнении запросов построителя запросов. Допускает нескольким установкам CodeIgniter использовать одну базу данных.
pconnect TRUE/FALSE (булево) - Стоит ли использовать постоянное соединение.
db_debug TRUE/FALSE (булево) - Стоит ли отображать ошибки базы данных.
cache_on TRUE/FALSE (булево) - Включено ли кеширование базы данных, смотрите также класс кеширования базы данных.
cachedir Абсолютный путь каталога кеша на сервере к запросам базы данных.
char_set Кодировка используемая при работе с базой данных.
dbcollat

Сопоставление кодировки в работе с базой данных

Примечание

Используется только с ‘mysql’ и ‘mysqli’ драйверами.

swap_pre Префикс таблицы по умолчанию, который должен быть заменен с dbprefix. Это полезно для распределенных приложений, где вы можете запустить написаные вручную запросы с нужным префиксом, установленным конечным пользователем.
schema Схемы базы данных, по умолчанию ‘public’. Используется с PostgreSQL и ODBC драйверами.
encrypt

Будет ли использовано зашифрованное соединение.

  • ‘mysql’ (устаревшее), ‘sqlsrv’ и ‘pdo/sqlsrv’ драйверы принимают TRUE/FALSE
  • ‘mysqli’ и ‘pdo/mysql’ драйверы принимают массив со следующими параметрами:
    • ‘ssl_key’ - Путь к файлу закрытого ключа
    • ‘ssl_cert’ - Путь к файлу открытого ключа сертификата
    • ‘ssl_ca’ - Путь к файлу сертификации
    • ‘ssl_capath’ - Путь к каталогу, содержащему доверенным центром сертификации в PEM формате
    • ‘ssl_cipher’ - Список допустимых шифров используемых для шифрования, разделенный двоеточиями (‘:’)
    • ‘ssl_verify’ - TRUE/FALSE; Следует ли проверять сертификат сервера или нет (‘mysqli’ только)
compress Нужно ли использовать сжатие на клиенте (MySQL только).
stricton TRUE/FALSE (булев) - Устанавливать ли соединения “Сторогого Режима”, хорошо для обеспечения строгого SQL при разработке приложений.
port

Порт базы данных. Чтобы использовать это значение следует добавить строку в массив данных конфигурации.

$db['default']['port'] = 5432;

Примечание

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