【问题标题】:Fatal error: Call to undefined function: MDB2_Driver_MYSQL::getAll()致命错误:调用未定义函数:MDB2_Driver_MYSQL::getAll()
【发布时间】:2012-04-26 07:29:13
【问题描述】:

我正在将站点从 Fedora 14、PHP4 和 PEAR DB 升级到 Fedora 16、PHP 5.4 和 PEAR MDB2 2.5.0b3,我收到了错误

致命错误:调用未定义函数:MDB2_Driver_MYSQL::getAll()。在 /usr/share/php/MDB2.php 第 1892 行

很明显,我检查了 MDB2.php 文件的第 1892 行,其中包含 __call 魔术方法的错误报告代码(允许您通过将特定函数传递给 __call 来调用它)

我检查了__call 的用法,似乎没有。同样,当我尝试查找 MDB2_Driver_MYSQL 的来源时,唯一提到它的地方是 MDB2.php(作为有关 MySQL 驱动程序的注释)、类声明 (class MDB2_Driver_mysql extends MDB2_Driver_Common) 和.xml 文件中的描述标题。

我已手动将/usr/share/php/MDB2/Extended.php 文件包含在定义MDB2_Driver_mysql 类的文件中,但这并没有帮助(并不是说这将是一个永久修复...)

有没有人遇到过这个错误,如果有,你做了什么来修复它?事实证明,Google 几乎没用,因为它的唯一位置 specifically mentioned 并没有真正处理它。

【问题讨论】:

标签: php mysql pear mdb2


【解决方案1】:

将你的类中的 getAll() 更改为 queryAll(),导致 DB 和 MDB2 之间存在一些差异,getOne、getRow 也是如此——它们都更改为 queryOne、queryRow。在这里你可以阅读它http://www.phpied.com/db-2-mdb2/

【讨论】:

    【解决方案2】:

    确保在进行查询之前在代码中加载了扩展模块,如下所示:

    $db->loadModule('Extended');
    

    【讨论】:

    • 在上面 Raffael 的评论和这里的评论之间,我尝试以多种方式加载扩展模块,但没有任何区别(即使作为 MDB2::connect 函数的一部分加载) )。奇怪的是,getAll 调用适用于 MDB2,但不适用于 MDB2_Driver_MYSQL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2012-07-18
    • 2017-01-25
    • 2012-06-28
    相关资源
    最近更新 更多