Il est possible d'effectuer des requêtes SQL sur une base de données autre que celle de Drupal,
tout en utilisant les fonctions db_select()
, db_query()
, ....
Pour cela, il faut déclarer la ou les bases externes dans le fichier site/default/settings.php
:
$databases = array (
'default' => array (
'default' => array (
'database' => 'drupal',
'username' => 'username',
'password' => 'password',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
'ma_nouvelle_base' => array (
'default' => array (
'database' => 'db1',
'username' => 'username2',
'password' => 'password2',
'host' => 'db.example.com',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
Vous pouvez maintenant utiliser la nouvelle base dans vos modules, grâce à la fonction db_set_active()
:
// Sélection de la nouvelle base
db_set_active('ma_nouvelle_base');
// Exécution d'un requête
$results = db_query($sql);
// Retour à la base par défaut
db_set_active('default');