zend数据库连接

时间:2012-02-13 09:53:30

标签: zend-framework zend-db

在我们的一个项目中,application.ini中指定的数据库连接是

resources.db.adapter = Mysqli
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = ''
resources.db.params.dbname = zf_tutorial

但是我需要从另一个文件中调用主机,用户名,密码和dbname。怎么做?

3 个答案:

答案 0 :(得分:2)

通常在application.ini中使用数据库设置调用默认适配器是微不足道的
$db = Zend_Db_Table::getDefaultAdapter();
resources.db.isDefaultTableAdapter = true添加到a​​pplication.ini可确保您正在调用正确的适配器 在某些情况下,这可能无法正常工作,其中大多数都涉及自举。

答案 1 :(得分:1)

通常,在index.php中设置与DB的连接:

// 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);

在此代码中,$ adapter和$ params是硬编码的。您可以从自定义文件中获取$ adapter和$ params。

答案 2 :(得分:0)

这里接受的答案不是获取db对象的好方法,它应该像你原来那样在application.ini中设置。

如果你想获得db对象的另一个实例,你有几个选项;你可以像@RockyFord建议的那样做,或者你可以从任何这样的控制器中获取db对象: -

$db = $this->getInvokeArg('bootstrap')->getResource('db');

如果你想进一步访问connection details(我无法想象为什么你会再次需要它们),那么你可以从db对象中获取它们: -

$dbConfig = $db->getConfig();

或确实: -

$dbConfig = $this->getInvokeArg('bootstrap')->getResource('db')->getConfig();

这将为您提供包含连接数据的数组,您可以尝试此操作并执行var_dump($dbConfig);查看详细信息。

如果需要,这是一种更健壮的访问db对象的方法,但如果你需要在多个地方执行此操作,我会仔细查看整体代码设计,尤其是在访问时这里描述的连接细节。