Brauni Опубликовано: February 21, 2020 Жалоба Share Опубликовано: February 21, 2020 Всем привет, нужна Ваша помощь) Вчера обнаружилась проблема на сайте, что при обновлении модов или просто чистка кеша и главная страница выдает ошибку HTTP 500. АДМИНКА продолжает работать стабильно. Сама ошибка: Fatal error: Uncaught exception 'Exception' with message 'Error: 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 'AND p.upc = '1'' at line 1 Error No: 1064 SELECT p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special AND p.upc = '1'' in /hom in /home/m/makeevoa/laminatica.ru/public_html/system/library/db/mysqli.php on line 40 Каким то макаром меня привело сюда: # Получение списка хитов (по UPC) public function getHitsProducts() { $this->load->model('catalog/product'); $sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special"; $sql .= " AND p.upc = '1'"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $categories = $this->model_catalog_product->getCategories($result['product_id']); if($categories[0]['category_id'] != 0){ $seo_url =$categories[0]['category_id']; }else{ $seo_url = $categories[0]['category_id']; } $product_data[$result['product_id']] = $this->getProduct($result['product_id']); $product_data[$result['product_id']]['href'] = $this->url->link('product/product', 'path=' . $seo_url . '&product_id=' . $result['product_id']); } ; return $product_data; } Может кто помочь? Благодарность не просто словом будет. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
BuslikDrev Опубликовано: February 21, 2020 Жалоба Share Опубликовано: February 21, 2020 Ну так, всё видно же, что нету строки между этими строк: Скрытый текст $sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special"; // тут нету строки (обращение к таблице товара) $sql .= " AND p.upc = '1'"; Возможно какой-то модификатор удаляет эту строку или оно всегда такое было. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.