Просто добавьте еще одну DSN для вашей другой БД и подключитесь к ней с помощью PDO ...
Фактически мы определили наши базы данных в конфигурации Zend следующим образом (с использованием XML), чтобыобслуживает несколько соединений с БД:
<databases>
<db_one>
<adapter>pdo_mysql</adapter>
<params>
<dbname>...</dbname>
<username>...</username>
<password>...</password>
<host>...</host>
<port>...</port>
</params>
</db_one>
<db_two>
<adapter>pdo_mysql</adapter>
<params>
<dbname>...</dbname>
<username>...</username>
<password>...</password>
<host>...</host>
<port>...</port>
</params>
</db_two>
</databases>
(Конечно, они на самом деле не называются db_one и db_two, но имеют правильное имя: p).
edit
Вы можете инициализировать соединения с БД следующим образом (вызовите это где-нибудь в вашей начальной загрузке):
private function initDb()
{
foreach ($this->config->databases as $name => $database) {
try {
$db = Zend_Db::factory($database);
// Hack for MySQL utf8 encoding...
if ($database->adapter == 'pdo_mysql') {
$db->getConnection();
$db->query('SET NAMES utf8');
}
Zend_Registry::set($name, $db);
} catch (Zend_Db_Adapter_Exception $e) {
throw new Application_Exception($e->getMessage());
} catch (Zend_Exception $e) {
throw new Application_Exception($e->getMessage());
}
}
}
Затем, если вы хотите выполнить запрос к db_two в любом месте вашего кода, вы можетеиспользуйте:
$db = Zend_Registry::get('db_two');
$stmt = $db->query('select ... from ...');
И используйте fetch () или fetchAll () для $ stmt, как считаете нужным.
Кстати, вам не нужно использовать Zend_Registry и открывать все соединения при каждом запросеконечно, так что просто рассмотрите это как пример реализации, а не как руководство по решению вашей проблемы.