【问题标题】:Zend_Db without Zend Framework [closed]没有 Zend 框架的 Zend_Db [关闭]
【发布时间】:2011-06-17 23:26:47
【问题描述】:

我想在没有 Zend_Framework 的情况下使用 Zend_Db。我想将 Zend_Db 合并到我现有的网站中,但该网站不是使用 Zend 框架制作的。可以像这样使用 Zend_Db 吗?你能推荐好的教程或例子如何做好吗?

【问题讨论】:

    标签: php zend-framework zend-db


    【解决方案1】:

    在某种程度上,这取决于您使用的 Web 框架。但是,总的来说,Zend_Db documentation 在这方面非常清楚。

    在您的引导程序中创建一个适配器实例。举个例子:

    $db = Zend_Db::factory('Pdo_Mysql', array(
        'host'     => '127.0.0.1',
        'username' => 'webuser',
        'password' => 'xxxxxxxx',
        'dbname'   => 'test'
    ));
    

    如果您打算使用Zend_Db_Table,那么您可以将其设为默认适配器:

    Zend_Db_Table::setDefaultAdapter($db);
    

    无论如何,将此适配器保存在您可以访问的地方会很有帮助。例如:

    Zend_Registry::set('db', $db);
    

    然后在您的下游代码中,使用此适配器为 select()insert()update()delete() 等创建查询:

    $db = Zend_Registry::get('db');
    $select = $db->select()
        ->from('posts')
        ->where('cat_id = ?', $catId)
        ->order('date_posted DESC')
        ->limit(5);
    $rows = $db->fetchAll($select);
    

    希望这会有所帮助。干杯!

    【讨论】:

    • 谢谢。我会试试这个。
    【解决方案2】:

    对于 Zend Framework 2.*,创建适配器是:

    $db = new \Zend\Db\Adapter\Adapter([
        'driver' => 'Pdo_Mysql',
        'host' => '127.0.0.1',
        'username' => 'webuser',
        'password' => 'xxxxxx',
        'database' => 'test',
    ]);
    

    创建选择:

    $sql = new \Zend\Db\Sql\Sql($db);
    $select = $sql->select()
        ->from('posts')
        ->where(array('cat_id' => $catId))
        ->order('date_posted DESC')
        ->limit(5);
    $statement = $sql->prepareStatementForSqlObject($select);
    $results = $statement->execute();
    

    或者,如果您想从 $select 中获取纯 SQL:

    $selectSql = $sql->getSqlStringForSqlObject($select);
    

    Docs 可能会有所帮助。如果使用TableGateway 会更简单。

    【讨论】:

      【解决方案3】:

      使用 Zend_Db 甚至比使用 Raw PDO 更可取(恕我直言)。只需创建一个 $db 对象,然后使用 Zend_Db_Select 类创建 SQL 语句,并将 $select SQL 语句传递给 fetch* (fetchRow, fetchAll...) 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-15
        • 2013-02-19
        • 2014-08-04
        • 2011-03-18
        相关资源
        最近更新 更多