php - Joomla 3.0 的 db->loadObjectList() 可能存在问题

标签 php mysql joomla joomla3.0

我们开发了一个可以在 Joomla 1.5 和 2.5 上正常工作的 shoutbox。我通过更改 XML 中的版本和其他一些位 n bobs 使其与 Joomla 3.0 兼容。

当我尝试加载分配了 shoutbox 模块的页面时,我收到以下错误消息:

Notice: Trying to get property of non-object in C:\wamp\www\XXX\libraries\legacy\module\helper.php on line 150

Notice: Undefined property: stdClass::$content in C:\wamp\www\XXX\templates\system\html\modules.php on line 17

我将其缩小到导致问题的一行,即:

$rows = $db->loadObjectList();

此行来自以下用于检索呼喊的函数:

function getShouts($number, $timezone, $message) {
    global $mainframe;
    $shouts = array();
    $db =& JFactory::getDBO();
    $query = 'SELECT * FROM #__shoutbox ORDER BY id DESC';
    $db->setQuery($query , 0 , $number);
    $rows = $db->loadObjectList();
    $i=0;
    $timezone=$timezone*60*60;
    foreach ( $rows as $row ) {
        $shouts[$i]->id = $row->id;
        $shouts[$i]->name = $row->name;
        $adjustedtime = strtotime($row->when) + $timezone;
        $shouts[$i]->when = date( 'Y-m-d H:i:s', $adjustedtime);
        $shouts[$i]->ip = $row->ip;
        $shouts[$i]->msg = $row->msg;
        $i++;
    }
    return $shouts;
}

老实说,我不知道为什么我会收到这 2 个错误,因为它们的模块在以前的 Joomla 版本中工作得很好。我尝试过使用不同的方法来获得喊叫声,但没有任何效果。

有没有人知道为什么会发生这种情况并有解决方案?

最佳答案

我不知道它在 2.5 中是如何工作的,但你需要 http://www.theartofjoomla.com/home/9-developer/135-database-upgrades-in-joomla-16.html $query = $db->getQuery(true);

而且你不应该在这里使用 & $db =& JFactory::getDBO(); 因为对象总是通过引用传递。

关于php - Joomla 3.0 的 db->loadObjectList() 可能存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13031710/

相关文章:

mysql - Joomla 和 Moodle 可以共享同一个数据库吗?

php - Laravel通过中间表获取belongsTo

MySQL - 如何通过单个操作更改所有数据库上的列?

php - PHP 中的 CRUD 操作...在 edit.php 中出现错误

mysql - 我把phpmyadmin的mysql端口号改了,现在登不上了

database - 写入 joomla 组件中的多个表?

php - 我在使用 Azure 登录时跳过了权限请求接口(interface)。提供了 'Grant admin consent' 权限。但 MFA 现在禁用

php - isset() 没有给出预期的结果

php - 1250 - 来自其中一个 SELECT 的表 'sub' 不能在全局 ORDER 子句中使用

html - 单击 css 时禁用超链接