Теперь рассмотрим эти способы.
1 . используя Database::getConnection()
Изменения в settings.php
//this is connection by default
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'users',
'username' => 'root',
'password' => '',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
//this is how the connection to other base is prescribed
'import' =>
array (
'default' =>
array (
'database' => 'database',
'username' => 'root',
'password' => '',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
Теперь у нас появился новый ключ, который называется "import", и у него есть один шаблон, который называется "default".
Теперь пишем само соединение:
$import = Database::getConnection($target='default',$key='import');
// into the variable import gets the object which has query method by the help of which we can implement the requests
$result = $import->query($sql,$args,$opts);
Этот способ не лучший, поскольку, когда мы работаем с разнотипными базами, возникает необходимось писать несколько запросов с различным синтаксисом.
2 . используя Database::addConnectionInfo() і db_set_active()
// form massif of connection to other base
$other_database = array(
'database' => 'databasename',
'username' => 'username',
'password' => 'password',
'host' => 'localhost',
'driver' => 'mysql',
);
// after this announce our connection our connection in Database::addConnectionInfo()
// first parameter is key, the second one - template (target), the third one - masiff with parameters of connection
Database::addConnectionInfo('YourDatabaseKey', 'default', $other_database);
// make this connection active
db_set_active('YourDatabaseKey');
// all requests that are after db_set_active
// will adress to the base connection of which we denoted in the parameter db_set_active
db_set_active(); // to make connection active by default we write the following db_set_active with an empty parameter()
Данный способ очень подходит в случае, когда нет доступа к settings.php
3 . добавляя третий аргумент функции db_select, db_insert, db_update, etc.
Изменения в settings.php
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'users',
'username' => 'root',
'password' => '',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
'import' =>
array (
'database' => 'database',
'username' => 'root',
'password' => '',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
Как можно заметить, мы не создавали новый ключ, а добавили новый шаблон (target) в ключ (key) default, потому что следующий наш пример не поддерживает подключение с другими ключами.
Рассмотрим запрос с помощью функции db_select()
// in the db_ select function as the third parameter we transfer masiff where the key will be "target" and the meaning will be the one we prescribed in settings.php, in our case it's "import"
$import = db_select('table', 't', array('target' => 'import'))
->fields('t', array('fields1'))
->condition('t.fields2', 'field')
->condition('t.fielduser', $user->uid)
->execute()
->fetchAssoc();
На мой взгляд, этот способ самый удобный, ведь мы сразу имеем под рукой подключения, и можем его контролировать в каждом запросе.
Конечно можно использовать mysql_connect () или PDO, но мы говорим о Drupal, в котором это предусмотрено. Таким образом, при условии внимательного изучения вышеизложенного, каждый, в дальнейшем, без проблем сможет работать с различными базами в drupal 7.