CakePHP PDO准备声明

时间:2013-11-14 23:09:57

标签: php mysql cakephp pdo

我正在使用CakePHP 2.4.1,我需要直接访问PDO才能从我的MySQL数据库中逐行提取一组记录。

这是我正在使用的一段代码,它产生了问题:

            // Get PDO access
    $this->_pdo = $this->Event->getDataSource();

    try {

        // Start transaction
        $this->_pdo->begin();

        // All the past events
        $stm = $this->_pdo->prepare("SELECT `id` FROM `events` WHERE `stop_time` < '" . date('Y-m-d H:i:s') . "'");

        // Loop through the events
        if( $stm->execute() ) {
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                // ....
            }
        }

        // Commit transaction
        $this->_pdo->commit();

    } catch (Exception $e) {

        // Rollback transaction
        $this->_pdo->rollback();

        CakeLog::write('error', $e );
    }

但是,一旦我启动脚本,我就会收到此错误消息

PHP Fatal error:  Call to undefined method Mysql::prepare()

但我已经看到这个框架支持PDO,特别是prepare()函数。 CakePHP PDO Documentation

有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分:4)

实际上你正在使用的课程是http://api.cakephp.org/2.4/class-DataSource.html 那里没有prepare()方法。用它来获取PDO

 $myPDO = $this->SomeModel->getDataSource()->getConnection();