You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'product_shop`
LEFT JOIN `ps_product` p ON (p.`id_product` = produ...' at line 36<br /><br /><pre>
SELECT p.*, product_shop.*, image_shop.`id_image` id_image,
stock.`out_of_stock`, IFNULL( stock.`quantity`, 0 ) AS quantity
FROM (
SELECT product_shop.*, IFNULL(product_attribute_shop.`id_product_attribute`, 0) AS id_product_attribute,
product_attribute_shop.`minimal_quantity` AS product_attribute_minimal_quantity, pl.`description`, pl.`description_short`, pl.`available_now`,
pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`,
DATEDIFF(product_shop.`date_add`, DATE_SUB("2024-03-19 00:00:00",
INTERVAL 20 DAY)) > 0 AS new,
(product_shop.`price` + IFNULL(product_attribute_shop.`price`, 0)) AS orderprice
,IF(product_feature_value.id_feature_value = 554, 1,
IF(product_feature_value.id_feature_value = 550, 2,
IF(product_feature_value.id_feature_value = 552, 3,
IF(product_feature_value.id_feature_value = 551, 4, 0)
)
)
) AS feature_order
FROM `ps_category_product` cp
STRAIGHT_JOIN ps_product_shop product_shop
ON (product_shop.id_product = cp.id_product AND product_shop.id_shop = 1) LEFT JOIN `ps_product_attribute_shop` product_attribute_shop
ON (product_shop.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.`id_shop`=1)
LEFT JOIN `ps_category` c ON (c.`id_category` = cp.`id_category`
AND c.`nleft` >= 974
AND c.`nright` <= 985)
LEFT JOIN `ps_product_lang` pl
ON (product_shop.`id_product` = pl.`id_product`
AND pl.`id_lang` = 1 AND pl.id_shop = 1 )
LEFT JOIN `ps_feature_product` product_feature
ON (product_shop.`id_product` = product_feature.`id_product`)
LEFT JOIN `ps_feature_value` product_feature_value
ON (product_feature.`id_feature_value` = product_feature_value.`id_feature_value`)
WHERE c.`id_category` > 0 AND product_shop.`active` = 1 AND product_shop.`visibility` IN ("both", "catalog") GROUP BY cp.`id_product` ORDER BY product_shop.`id_product ASC LIMIT 0,18) AS `product_shop`
LEFT JOIN `ps_product` p ON (p.`id_product` = product_shop.`id_product`)
LEFT JOIN `ps_image_shop` image_shop
ON (image_shop.`id_product` = product_shop.`id_product` AND image_shop.`cover`=1 AND image_shop.`id_shop`=1)
LEFT JOIN ps_stock_available stock
ON (stock.id_product = `product_shop`.id_product AND stock.id_product_attribute = 0 AND stock.id_shop = 1 AND stock.id_shop_group = 0 )
</pre>
at line 769 in file classes/db/Db.php
764. if ($webservice_call && $errno) {
765. $dbg = debug_backtrace();
766. WebserviceRequest::getInstance()->setError(500, '[SQL Error] ' . $this->getMsgError() . '. From ' . (isset($dbg[3]['class']) ? $dbg[3]['class'] : '') . '->' . $dbg[3]['function'] . '() Query was : ' . $sql, 97);
767. } elseif (_PS_DEBUG_SQL_ && $errno && !defined('PS_INSTALLATION_IN_PROGRESS')) {
768. if ($sql) {
769. throw new PrestaShopDatabaseException($this->getMsgError() . '<br /><br /><pre>' . $sql . '</pre>');
770. }
771.
772. throw new PrestaShopDatabaseException($this->getMsgError());
773. }
774. }
380. $this->result = $this->_query($sql);
381. }
382. }
383.
384. if (_PS_DEBUG_SQL_) {
385. $this->displayError($sql);
386. }
387.
388. return $this->result;
389. }
390.
29. $context = Context::getContext();
30. if(isset($context->ss_total_sql))
31. $context->ss_total_sql++;
32. else
33. $context->ss_total_sql=1;
34. return parent::query($sql);
35. }
36. }
608. }
609.
610. return $this->execute($sql, $use_cache);
611. }
612.
613. $this->result = $this->query($sql);
614.
615. if (!$this->result) {
616. $result = false;
617. } else {
618. if (!$array) {
71. }
72.
73.
74.
75. if ($type == 1) {
76. $result = Db::getInstance($instanceMaster)->ExecuteS($query, $useArray, $useCache);
77. } elseif ($type == 2) {
78. $result = Db::getInstance($instanceMaster)->getRow($query, $useCache);
79. } elseif ($type == 3) {
80. $result = Db::getInstance($instanceMaster)->getValue($query, $useCache);
81. } elseif ($type == 4) {
3498. LEFT JOIN `' . _DB_PREFIX_ . 'product` p ON (p.`id_product` = product_shop.`id_product`)
3499. LEFT JOIN `' . _DB_PREFIX_ . 'image_shop` image_shop
3500. ON (image_shop.`id_product` = product_shop.`id_product` AND image_shop.`cover`=1 AND image_shop.`id_shop`=' . (int)$context->shop->id . ')
3501. ' . Product::sqlStock('product_shop', 0) . '
3502. ';
3503. $result = SearchEngineDb::query($sql);
3504.
3505. if ($orderBy == 'position') {
3506. /* PrestaShopLogger::addLog(json_encode($result), 1); */
3507. }
3508.
81. $result->setAvailableSortOrders(
82. $sortOrders
83. );
84. }
85. $result->setTotalProductsCount($this->module->getCategoryProducts(null, null, null, $query->getSortOrder()->toLegacyOrderBy(), $query->getSortOrder()->toLegacyOrderWay(), true));
86. $result->setProducts($this->module->getCategoryProducts((int)$context->getIdLang(), (int)$query->getPage(), (int)$query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(), $query->getSortOrder()->toLegacyOrderWay()));
87. }
88. return $result;
89. }
90. protected function getSearchEngineToUse()
91. {
313. /* PrestaShopLogger::addLog('ff' . get_class($provider), 1); */
314.
315.
316. /** @var ProductSearchResult $result */
317. $result = $provider->runQuery(
318. $context,
319. $query
320. );
321.
322. Hook::exec('actionProductSearchProviderRunQueryAfter', [
323. 'query' => $query,
591. header('Content-Type: application/json');
592. $this->ajaxRender(json_encode($this->getAjaxProductSearchVariables()));
593.
594. return;
595. } else {
596. $variables = $this->getProductSearchVariables();
597. $this->context->smarty->assign([
598. 'listing' => $variables,
599. ]);
600. $this->setTemplate($template, $params, $locale);
601. }
145. ) {
146. $this->doProductSearch(
147. 'catalog/listing/category',
148. [
149. 'entity' => 'category',
150. 'id' => $this->category->id,
151. ]
152. );
153. }
154. }
155.
301. if (!$this->content_only && ($this->display_header || (isset($this->className) && $this->className))) {
302. $this->initHeader();
303. }
304.
305. if ($this->viewAccess()) {
306. $this->initContent();
307. } else {
308. $this->errors[] = $this->trans('Access denied.', [], 'Admin.Notifications.Error');
309. }
310.
311. if (!$this->content_only && ($this->display_footer || (isset($this->className) && $this->className))) {
512. if (isset($params_hook_action_dispatcher)) {
513. Hook::exec('actionDispatcher', $params_hook_action_dispatcher);
514. }
515.
516. // Running controller
517. $controller->run();
518.
519. // Execute hook dispatcher after
520. if (isset($params_hook_action_dispatcher)) {
521. Hook::exec('actionDispatcherAfter', $params_hook_action_dispatcher);
522. }
852. echo $cache;
853. exit;
854. }
855. }
856. }
857. parent::dispatch();
858. }
859. }
24. * @copyright Since 2007 PrestaShop SA and Contributors
25. * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
26. */
27.
28. require dirname(__FILE__) . '/config/config.inc.php';
29. Dispatcher::getInstance()->dispatch();