ertttert
Уровень абстракции баз данных облегчает запоминание имен функций, а, кроме того, еще и обеспечивает защиту запросов. Иногда бывает нужно подключиться к сторонним или унаследованным базам данных, и было бы хорошо использовать для этого — а также для защиты запросов — API-интерфейс баз данных Drupal. И это действительно возможно! Например, модуль может открыть подключение к базе данных вне Drupal и извлечь оттуда данные. В файле settings.php
имеется массив $databases
, составленный из нескольких строк подключения к базам данных. Вот стандартный синтаксис для описания одного подключения:
array( 'driver' => 'mysql','database' => 'databasename','username' => 'username','password' => 'password','host' => 'localhost','port' => 3306,'prefix' => 'myprefix_',) ;
Предположим, что имеются две базы данных: стандартная (с именем D7
) и унаследованная, которая определена ниже:
$databases =array ( 'default' =>array ( 'default' =>array ( 'driver' => 'mysql','database' => 'd7','username' => 'username','password' => 'userpassword','host' => 'localhost','port' => '','prefix' => '',) ,) ,'legacy' =>array ( 'default' =>array ( 'driver' => 'mysql','database' => 'legacydatabase','username' => 'legacyusername','password' => 'legacyuserpassword','host' => '122.185.22.1','port' => '6060',) ,) ,) ;
// Получение информации из базы данных вне Drupal. db_set_active( 'legacy') ; $result =db_query( "SELECT * FROM ldap_user WHERE uid = %d", $user->uid) ;// Возврат к стандартному подключению. db_set_active( 'default') ;
Всего комментариев: 0 | |