在Zend Framework中使用选择查询而不提供数据库信息

时间:2011-12-21 14:43:47

标签: zend-framework zend-db zend-db-select

我使用select查询,如下面的代码:

$params = array(
        'username' => 'root',
        'password' => '',
        'dbname' => 'mst2');
    $db = Zend_Db::factory('pdo_mysql', $params);

$select = $db->select()
            ->from(array('dc' => 'delivery_center'))
            ->join(array('r' => 'region'), 'dc.region_id = r.region_id');
    $stmt = $select->query();
    $result = $stmt->fetchAll();

这里$ db是我正在使用的数据库的凭据。但是我已经通过以下行在application.ini中指定了凭据:

resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = ''
resources.db.params.dbname = mst2

现在逻辑上我不应该再提供这些凭据。但是我必须使用select查询。那么如何在不再证明数据库凭证的情况下初始化$ db?提前感谢。

2 个答案:

答案 0 :(得分:1)

默认情况下,Db资源可用,并在引导时自动初始化。

如果你想在你的应用程序中获得数据库适配器,你可以从bootstrap获取它作为插件资源:

$resource = $bootstrap->getPluginResource('db');
$db = $resource->getDbAdapter();

如果您没有引导引导,则始终可以从FrontController中检索它:

$front = Zend_Controller_Front::getInstance(); 
$bootstrap = $front->getParam('bootstrap');

答案 1 :(得分:0)

您可以使用

Zend_Db的工厂::($ zend_config_object->资源 - > DB) 但我认为如果你在application.ini中指定了这个,那么zend会自动为你创建db对象,你可以通过
实现它 Zend_Register和键“db”。