【问题标题】:Zend Raw SQL QueryZend 原始 SQL 查询
【发布时间】:2014-07-15 22:47:27
【问题描述】:

我希望在 Zend 控制器中执行原始 SQL 查询。

我看了这里http://framework.zend.com/manual/1.11/en/zend.db.statement.html,它说要做

    $sql = 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?';

    $stmt = new Zend_Db_Statement_Mysqli($db, $sql);

    $stmt->execute(array('goofy', 'FIXED'));

但是每当我这样做时,它都会给我一个 $db 的错误原因...。 $db 应该保留什么,因为它在文档中的任何地方都没有说明...

此外,每当我完成后,我想返回一个包含任何结果的数组,我能做些什么像$resultArray = $stmt->execute(array('goofy', 'FIXED')); ???

谢谢,

【问题讨论】:

    标签: php mysql zend-framework


    【解决方案1】:

    它应该是Zend_Db_Adapter 类型的对象。

    在文档示例的其他地方,变量$db 通常用作 Zend_Db_Adapter 的实例。我想人们应该阅读完整的文档,并注意这样的约定。


    你的评论:

    您可以将 application.ini 文件加载到 Zend_Config_Ini 对象中,然后使用该 Zend_Config 对象作为 Zend_Db_Factory 的参数。请参阅此处的示例:http://framework.zend.com/manual/1.11/en/zend.db.adapter.html#zend.db.adapter.connecting.factory-config

    【讨论】:

    • 到目前为止,我所有的数据库信息都存储在我的 application.ini 中,有没有办法将该文件中的 mysql 信息调用到 Zend_Db_Adapter,这样我就不必更改它了如果我以后要更改任何信息,在 2 个地方?
    • 太棒了,我阅读了您的其他 RE 评论,这样看起来容易多了。但是有一个问题,它说要执行`/path/to/config.ini`,但我无法访问application.ini。那么我是否必须公开创建一个新文件,还是有办法访问 application.ini 文件?
    • @BrandonStewart 查看以下帖子如何获取数据库适配器:stackoverflow.com/a/1786979/1948627, stackoverflow.com/a/925852/1948627
    【解决方案2】:
    Try this code:
    
    Put code in bootstrap.php
    protected function _initRegistry() {
            $this->bootstrap('db');
            $dbc = $this->getResource('db');
            $dbc->setFetchMode(Zend_Db::FETCH_OBJ);
            Zend_Registry::set('db', $dbc);
            global $db;
            $db = Zend_Registry::get('db');
        }
    

    【讨论】:

    • 非常感谢!我回家后试试看! :)
    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 2012-03-16
    • 2014-04-15
    • 1970-01-01
    • 2018-05-15
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多