Синтаксическая ошибка около 'строк ОТ `#__ whmportfolio_item` КАК ГДЕ a.cate в (4)' в строке 1 - PullRequest
0 голосов
/ 08 июня 2019

Я переместил сайт с сервера, на котором установлен сервер MySQL, на другой сервер, на котором установлена ​​версия сервера MariaDB, и сайт работал без проблем на старом сервере

Но на новом я получил эту ошибку:

1064 В вашем синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с «строками ОТ #__whmportfolio_item КАК ГДЕ a.cate in (4)» в строке 1

это помощниккод модуля:

<?php

    class ModWhmPortfolioHelper
    {
        public static function toggleVoteAjax() {
        $db = JFactory::getDbo();
        $u = WhmportfolioFrontendHelper::getUid();
        $pfid = JRequest::getInt('pfid', 0);
        if(!$pfid) {
            return null;
        }
        $rs = $db
        ->setQuery("SELECT id FROM #__whmportfolio_liked WHERE u = '{$u}'")
        ->loadObject();
        if(is_null($rs)) {
            $db
            ->setQuery("INSERT INTO #__whmportfolio_liked(pfid, u) VALUES ({$pfid}, '{$u}')")
            ->execute();
        }
        else {
            $db
            ->setQuery("DELETE FROM #__whmportfolio_liked WHERE id = {$rs->id}")
            ->execute();
        }

        return $db
        ->setQuery("SELECT count(*) as c FROM #__whmportfolio_liked WHERE u = '{$u}'")
        ->loadObject()->c;
    }

    public static function getItems($cate, $tag, $offset, $limit, $isize='0x0'){
        $db = JFactory::getDbo();
        $uid = WhmportfolioFrontendHelper::getUid();
        $where = "";
        if($tag || $cate) {
            $where = "WHERE ";
            if($tag) {
                $tag = implode(',', $tag);
                $where .= "a.tag in ({$tag})";
            }
            if($tag && $cate) {
                $where .= " AND ";
            }
            if($cate) {
                $cate = implode(',', $cate);
                $where .= "a.cate in ({$cate})";
            }
        }
        $q = 'SELECT DISTINCT a.*,'.
            "(select count(*) from #__whmportfolio_liked as l where l.pfid = a.id) as cliked,".
            "(select count(*) from #__whmportfolio_liked as l where l.u = '{$uid}') as lactive
            FROM `#__whmportfolio_item` AS a
            {$where}
            ORDER BY a.id DESC";
        $rs = $db->setQuery($q, $offset, $limit)->loadObjectList();
        if(is_null($rs)) return 0;

        foreach($rs as &$item) {
            WhmportfolioFrontendHelper::build($item, $isize);    
        }

        $q = "SELECT DISTINCT count(*) as rows FROM `#__whmportfolio_item` AS a {$where}";
        return (object)array('items'=>$rs, 'total'=>$db->setQuery($q)->loadObject()->rows);
    }


    }

?>



1 Ответ

0 голосов
/ 08 июня 2019

# вводит комментарий, который длится до конца строки.

Чтобы иметь # в имени таблицы, заключите его в кавычки с помощью обратных символов:

  ->setQuery("DELETE FROM `#__whmportfolio_liked` WHERE id = {$rs->id}")
                          ^                     ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...