我编写了一个脚本,通过我的应用程序ini。
我现在遇到的问题是,当我到达下一个数据库时,它仍然从第一个数据库而不是新数据库中选择。
是否可以关闭连接,然后在运行脚本时打开新连接。请记住,这只是一个我没有自举设置的脚本。我只是设置了一个自动加载,我可以加载我的模型。
循环遍历ini的部分
try {
$db = Zend_Db::factory($section->database->type, $section->database->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db', $db);
} catch(Zend_Db_Adapter_Exception $e) {
continue;
}
答案 0 :(得分:6)
请参阅Zend_Application_Resource_Multidb:
<强>的application.ini 强>
[production]
resources.multidb.db1.adapter = "pdo_mysql"
resources.multidb.db1.host = "localhost"
resources.multidb.db1.username = "webuser"
resources.multidb.db1.password = "XXXX"
resources.multidb.db1.dbname = "db1"
resources.multidb.db2.adapter = "pdo_pgsql"
resources.multidb.db2.host = "example.com"
resources.multidb.db2.username = "dba"
resources.multidb.db2.password = "notthatpublic"
resources.multidb.db2.dbname = "db2"
resources.multidb.db2.default = true
<强>的index.php 强>
$resource = $bootstrap->getPluginResource('multidb');
$db1 = $resource->getDb('db1');
$db2 = $resource->getDb('db2');
$defaultDb = $resource->getDb();
答案 1 :(得分:1)
对于任何没有解决方案的人来说,你所要做的就是:
application.ini - &gt;在这里定义您的数据库
resources.multidb。 db .adapter = SQLSRV
resources.multidb.db.host = localhost
resources.multidb.db.username = root
resources.multidb.db.password =
resources.multidb.db.dbname =
resources.multidb.db.isDefaultTableAdapter = true
resources.multidb。 db2 .adapter = SQLSRV
resources.multidb.db2.host = localhost
resources.multidb.db2.username = root
resources.multidb.db2.password =
resources.multidb.db2.dbname =
resources.multidb.db2.isDefaultTableAdapter = false
需要设置与第二个数据库的连接的控制器或型号
$ db2Ob = Zend_Controller_Front :: getInstance() - &gt; getParam(&#39; bootstrap&#39;) - &gt; getResource(&#39; multidb&#39;) - &gt; getDb(&#39; <强> DB2 强>&#39);
现在使用此$ db2Ob执行查询:
$ select = $ db2Ob-&gt; select() - &gt; from(array(&#39; db2tbl&#39; =&gt;&#39;表格在第二个数据库&#39;),数组(&#39) ;列名&#39;)) - &gt; where(condition);
希望这有助于某人。
此致
Supriya Rajgopal