Php Zend框架:一次连接一个多个数据库

时间:2011-01-07 21:16:49

标签: php zend-framework zend-db

我编写了一个脚本,通过我的应用程序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;   
    }

2 个答案:

答案 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)

对于任何没有解决方案的人来说,你所要做的就是:

  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

  2. 需要设置与第二个数据库的连接的控制器或型号

    $ db2Ob = Zend_Controller_Front :: getInstance() - &gt; getParam(&#39; bootstrap&#39;) - &gt; getResource(&#39; multidb&#39;) - &gt; getDb(&#39; <强> DB2 &#39);

  3. 现在使用此$ db2Ob执行查询:

    $ select = $ db2Ob-&gt; select() - &gt; from(array(&#39; db2tbl&#39; =&gt;&#39;表格在第二个数据库&#39;),数组(&#39) ;列名&#39;)) - &gt; where(condition);

  4. 希望这有助于某人。

    此致

    Supriya Rajgopal