2011-05-31 70 views
1

我正在执行的SQL查询中的Zend这样的事情,它是工作:在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设置我的代码?

感谢

+0

有一个看看这里:http://jaybill.com/2007/09/12/using-the-zend-framework-with-multiple-databases/ – ChrisH 2011-05-31 12:12:54

回答

1

要检索默认的数据库适配器使用下面的代码:

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

是的,我t正在工作。完整的答案也发布了。 – Student 2011-05-31 12:35:27

0

下面的代码是为我工作与multidb配置的application.ini

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