在Zend中执行SQL查询的问题?

时间:2011-05-31 11:59:41

标签: php database zend-framework

我正在使用这样的zend执行sql查询,它正在工作:

$front = Zend_Controller_Front::getInstance();
$bootstrap = $front->getParam('bootstrap');
$resource = $bootstrap->getPluginResource('db');
$dbAdapter = $resource->getDbAdapter();
$statement = $dbAdapter->query("SELECT * from tablename");
$results = $statement->fetchAll();

那时我的 application.ini 是这样的:

resources.db.adapter = "Mysqli"
resources.db.params.host = "localhost"
resources.db.params.username = "username"
resources.db.params.password = "password"
resources.db.params.dbname = "dbname"

问题:

现在我将 application.ini 更改为:

resources.multidb.local.adapter = "Mysqli"
resources.multidb.local.host = "localhost"
resources.multidb.local.username = "username"
resources.multidb.local.password = "passwod"
resources.multidb.local.dbname = "dbname"
resources.multidb.local.default = true

现在上面的zend代码产生以下错误:

Fatal error: Call to a member function getDbAdapter() on a non-object in Mapper.php  on line 297

如何根据新的 application.ini 设置来修复我的代码?

由于

2 个答案:

答案 0 :(得分:1)

要检索默认数据库适配器,请使用以下代码:

$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$resource = $bootstrap->getPluginResource('multidb');
$db = $resource->getDb();

答案 1 :(得分:0)

以下代码适用于我在 application.ini

中的multidb配置
$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$resource = $bootstrap->getPluginResource('multidb');
$db = $resource->getDb();
$statement = $db->query("SELECT * from tablename");
$results = $statement->fetchAll();