Spec-Zone.ru › CodeIgniter 4

Подключение к вашей базе данных

  • Доступные параметры
  • Ручное подключение к базе данных
  • Множественные подключения к одной базе данных
    • Подключение к нескольким базам данных
    • Подключение с пользовательскими настройками
    • Переподключение/поддержание соединения активным
    • Ручное закрытие соединения

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

$db = \Config\Database::connect();

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

Существует удобный метод, который является просто оболочкой вокруг вышеприведенной строки и предоставлен для вашего удобства:

$db = db_connect();

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

  1. Имя группы базы данных, строка, которая должна совпадать с именем свойства класса конфигурации. Значение по умолчанию — $config->defaultGroup.
  2. true/false (булево). Возвращать ли общее соединение (см. Подключение к нескольким базам данных ниже).

Ручное подключение к базе данных

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

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

$db = \Config\Database::connect('group_name');

Где group_name — имя группы подключения из файла конфигурации.

Множественные подключения к одной базе данных

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

$db = \Config\Database::connect('group_name', false);

Подключение к нескольким базам данных

Если вам нужно подключиться к нескольким базам данных одновременно, вы можете сделать это следующим образом:

$db1 = \Config\Database::connect('group_one');
$db  = \Config\Database::connect('group_two');

Примечание: измените слова «group_one» и «group_two» на конкретные имена групп, к которым вы подключаетесь.

Примечание

Вам не нужно создавать отдельные конфигурации баз данных, если вам нужно использовать только другую базу данных в рамках одного подключения. Вы можете переключаться на другую базу данных по мере необходимости, например, так: $db->setDatabase($database2_name);

Подключение с пользовательскими настройками

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

$custom = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',
    'DBDriver' => 'MySQLi',
    'DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => (ENVIRONMENT !== 'production'),
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
];
$db = \Config\Database::connect($custom);

Переподключение/поддержание соединения активным

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

Важно

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

$db->reconnect();

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

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

$db->close();

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/database/connecting.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API