Иногда приходится подключиться к другой базе данных и забрать из неё какие-либо данные. Сейчас я покажу, как правильно это делать в Drupal 7.
Шаг 1. Для подключения к другой базе данных необходимо создать массив с информацией для подключения к этой базе данных (структура этого массива будет зависеть от драйвера базы данных, используемого для этого подключения):
$other_database = array(
'database' => 'database_name', // Название базы данных к которой будем подключаться.
'username' => 'database_user', // Имя пользователя, который будет подключаться к базе данных.
'password' => '********', // Пароль, используемый для подключения.
'host' => 'localhost', // Хост, на котором находится база данных.
'driver' => 'mysql', // Драйвер для подключения к базе данных.
);
Шаг 2. Необходимо добавить информацию для подключения к базе данных. Для этого вызываем следующий метод:
Database::addConnectionInfo('module_name_key', 'default', $other_database);
Здесь в данный метод в качестве первого параметра передаем ключ базы данных, в качестве второго параметра - имя целевой базы данных и в качестве третьего параметра - информацию для подключения к базе данных (ее мы создавали в предыдущем шаге).
Шаг 3. Необходимо сделать базу данных активной, для этого вызываем функцию db_set_active($key = 'default') и в качестве параметра передаем ключ, который мы передавали первым параметром в метод Database::addConnectionInfo($key, $target, $info):
db_set_active('module_name_key');
Теперь мы переключились на другую базу данных и можем работать с ней. После завершения работы с данной базой данных, важно переключиться назад на базу данных по умолчанию, для этого необходимо вызвать функцию db_set_active($key = 'default') без передачи в нее параметров:
db_set_active();