Ahoj řeším u nás jak se napojit z našeho modulu na více databází současně a našla jsem tohle:
$other_database = array(
'database' => 'databasename',
'username' => 'username', // assuming this is necessary
'password' => 'password', // assuming this is necessary
'host' => 'localhost', // assumes localhost
'driver' => 'mysql', // replace with your database driver
);
// replace 'YourDatabaseKey' with something that's unique to your module
Database::addConnectionInfo('YourDatabaseKey', 'default', $other_database);
db_set_active('YourDatabaseKey');
// execute queries here
db_set_active(); // without the paramater means set back to the default for the site
drupal_set_message(t('The queries have been made.'));
To chápu...ale zajímalo by mě jestli můžu udělat taky tohle:
try {
$dbh = new PDO('pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass');
} catch (PDOException $e) {
watchdog("your module name",
"PDO error: %error",
array("%error" => $e->getMessage() ),
WATCHDOG_ERROR);
}
snažím se napojit totiž na Sphinx a udělat vlastní autocomplete pro textové políčko a běžně mimo drupal používám:
//Sphinx PDO
$ln_sph = new PDO( 'mysql:host=127.0.0.1;port=9306' );
//database PDO
$ln = new PDO( 'mysql:host=127.0.0.1;dbname=sphinx_autocomplete;charset=utf8', 'tester', 'test' );
V podstatě první spojení používám na vyhledání ve fulltextu Sphinx kde dostanu nějaká IDčka pro hledaný výraz např. IDčka článku kde se vyskytuje slovo "nevím" a to druhé spojení používám pak na získání už samotných článku podle IDček.
Jsem totiž spíš zvyklá pracovat s PDO
Díky
$connection = Database::getConnection('default', 'db_key');
To by neměl být problém, ale vzhledem k tomu že DB connection v Drupalu extenduje PDO, použil bych ji. Jen můžeš místo "db_set_active('YourDatabaseKey');" použít "$connection = Database::getConnection('default', 'YourDatabaseKey');" a tím pravděpodobně dosáhneš toho co potřebuješ.
Díky už vyřešeno a funguje…
Díky už vyřešeno a funguje to!
Přidat komentář