Я пишу класс оболочки для моего сайта drupal 7, который позволяет мне подключаться к моей базе данных phpbb и запрашивать ее.Несколько параллельных подключений к базе данных в drupal 7
При подключении к внешнему источнику данных (в соответствии с документацией Drupal) вы установили активный db, запустите запрос, а затем установите активный db на значение по умолчанию.
например.
db_set_active('phpbb');
$result = db_query($sql,$args,$opts);
db_set_active();//back to default
Но есть ли способ использовать оболочку базы данных Друпала, чтобы создать совершенно новое соединение, которое может быть постоянно установлен в новую базу данных без необходимости делать это переключение назад и вперед нонсенс? Конечно, мы можем обрабатывать соединения с несколькими базами данных одновременно.
Я сделал какой-то поисковик, но пока не нашел никого, кто пытался это сделать.
http://drupal.org/node/18429 также имеет некоторые примеры кода, особенно если вы хотите динамически настраивать параметры базы данных, то есть не жестко закодированы в settings.php. Например, если вы сохранили настройки базы данных где-то иначе, чем в settings.php, вы можете динамически создать массив и использовать Database :: addConnectionInfo() для соединения с базой данных. – sillygwailo
'$ phpbb = База данных :: getConnection ($ target = 'default', key = 'phpbb');' это ошибка, которую я вижу время от времени, и я не понимаю, как люди могут прийти к такому коду , То, что вы хотели, это '$ phpbb = Database :: getConnection ('default', 'phpbb');' единственная причина, по которой ваш код работал, заключается в том, что выражение '$ target = 'default'' оценивает' default', однако переменная ' $ target' в области * caller * изменяется на '' default'', который, вероятно, не указан. – chx
@chx Согласен - ответ обновлен :) – thtas