开发者

Using Joomla module and getting error "No valid database connection You have > an error in your SQL syntax"

开发者 https://www.devze.com 2023-01-31 04:20 出处:网络
I am using a Joomla module (ArogaRousel) that was made to display images of another module (AdsManager), and the module displays the following error:

I am using a Joomla module (ArogaRousel) that was made to display images of another module (AdsManager), and the module displays the following error:

No valid database connection You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) ORDER BY views DESC, id LIMIT 0, 9' at line 1 SQL=SELECT *,concat('/images/com_adsmanager/ads/',id,'a.jpg') as imgUrl FROM root_adsmanager_ads , root_adsmanager_adcat as ac WHERE published=1 AND (ac.adid=id and ac.catid IN ()) ORDER BY views DESC, id LIMIT 0, 9

I am not proficient in mysql, but I have found the file where the query is being made.

This is the code where the query is being made

$query = "SELECT *,concat('/images/com_adsmanager/ads/',id,'a.jpg') as imgUrl FROM #__adsmanager_ads "
     . $table
     . " WHERE published=1 "
     . $where
     . $ordering
     . $limit;

Could any of you, oh knowledgeable humans, indicate the error and the solution?

In response to Bemace here I add the whole function

// Get list of banners
function getAds(&$paramslist){

    $where = array();
    if ($paramslist['ads'] != '') $where[] = 'id IN (' . modArogarouselAdsmanagerHelper::cleanIds($paramslist['ads']) . ')';

    if ($paramslist['categories'] != '') {
        $where[] = 'ac.adid=id and ac.catid IN (' . modArogarouselAdsmanagerHelper::cleanIds($paramslist['categories']) . ')';
        $table = ' , #__adsmanager_adcat as ac';
        }


    $where = (count($where) > 0) ? ' AND (' . implode(' OR ', $where) . ')' : '';

    if ($paramslist['ordering'] == 1) {
        $ordering = ' ORDER BY views DESC, id';
    } else if ($paramslist['ordering'] == 2) {
        $ordering = ' ORDER BY views ASC';
    } else if ($paramslist['ordering'] == 3) {
        $ordering = ' ORDER BY id';
    } else if ($paramslist['ordering'] == 4) {
        $ordering = ' ORDER BY RAND()';
    }

    $limit = ($paramslist['limit'] != '') ? ' LIMIT 0, ' . ($paramslist['limit']) : '';

    $query = "SELECT *,concat('/images/com_adsmanager/ads/',id,'a.jpg') as imgUrl FROM #__adsmanager_ads "
             . $table
             .开发者_Python百科 " WHERE published=1 "
             . $where
             . $ordering
             . $limit;
    $db = &JFactory::getDBO();
    $db->setQuery($query);
    $adslist = $db->loadObjectList();
    $adslist = ($paramslist['mode_dir'] == 'bottom') ? array_reverse($adslist, true) : $adslist;
    //print_r($adslist);
    return $adslist;
}


The empty IN () right before the ORDER BY is the problem. You'll need to check the code that is setting the $where variable. It appears to be expecting at least one category to be selected but none appear to have been.

0

精彩评论

暂无评论...
验证码 换一张
取 消