Zend的数据库连接
在我们的项目中的application.ini指定的数据库连接的一个是Zend的数据库连接
resources.db.adapter = Mysqli
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = ''
resources.db.params.dbname = zf_tutorial
但我需要调用从另一个文件中的主机,用户名,密码,数据库。这个怎么做?
这里接受的答案不是获取数据库对象的好方法,它应该像application最初一样在application.ini中设置。
如果你想获得另一个db对象的实例,你有几个选项;你可以做@RockyFord建议,或者你可以从任何像这样的控制器db对象: -
$db = $this->getInvokeArg('bootstrap')->getResource('db');
如果你想走得更远,并有机会获得connection details(我无法想象,你为什么会再次需要它们),那么你可以从这样的数据库对象让他们: -
$dbConfig = $db->getConfig();
或者实际上: -
$dbConfig = $this->getInvokeArg('bootstrap')->getResource('db')->getConfig();
,这将给你包含连接数据的数组,你可以尝试此操作并执行var_dump($dbConfig);
以查看详细信息。
如果需要,这是一种更加健壮的访问数据库对象的方式,但如果您需要在多个位置执行此操作,则需要花费很长时间仔细查看整个代码设计,特别是如果您按照此处所述访问连接详细信息。
HI vascowhite, 我的要求是,我们有一个开源项目编码在正常的php4。我们现在计划用zend框架更新这个项目。所以目前我们不能整体升级。所以计划一步一步升级。所以最初我们必须使用现有的项目数据库连接。但是这个db连接是动态的。这个项目进一步分为子域,所以基于子域的数据库将会改变(用户和密码将保持不变)。所以db的每个子域都会改变。 – Pradeep 2012-02-14 05:34:55
通常情况下,连接到数据库中的index.php设置:
// TODO: $adapter and $params from custom place, not hardcoded
$adapter = 'pdo_mysql';
$params = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'mydb'
);
$db = Zend_Db::factory($adapter, $params);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
在此代码$适配器和$ PARAMS是硬编码。你可以从你的自定义文件中获得$ adapter和$ params。
是微不足道 $db = Zend_Db_Table::getDefaultAdapter();
添加resources.db.isDefaultTableAdapter = true
到的application.ini确保你调用正确的适配器。
有很多情况下,这可能无法正常工作,其中大多数涉及自举。
你是什么意思,完全由“从另一个文件”? – Songo 2012-02-13 11:50:45