MySQL LIMIT在Prestashop模块中不起作用

时间:2019-07-03 10:36:35

标签: mysql prestashop limit

我已经编写了一个在Prestashop 1.6模块中使用的查询,但惊讶地发现LIMIT在查询中不起作用。该计划是获得最畅销的十大产品。

我已经在phpMyAdmin中对其进行了测试,它可以完美运行,但是在应用程序中不起作用。以下是查询。

$sql = 'SELECT id_product, sale_nbr 
       FROM '._DB_PREFIX_.'product_sale 
       WHERE id_product = '.(int)$id_product.' 
       ORDER BY sale_nbr DESC LIMIT 10';

return Db::getInstance()->executeS($sql);

我也尝试过LIMIT 0, 10

没有错误消息LIMIT根本不起作用。在我的测试示例中,列表中的50种产品中有15种是最畅销的,但是我只想展示其中10种,但总以15种出现。

3 个答案:

答案 0 :(得分:0)

也许尝试嵌套:

sql = 'SELECT id_product, sale_nbr FROM (
       SELECT id_product, sale_nbr 
       FROM '._DB_PREFIX_.'product_sale 
       WHERE id_product = '.(int)$id_product.' 
       ORDER BY sale_nbr DESC LIMIT 10 ) t1';

答案 1 :(得分:0)

这完全取决于您用来执行查询的内容。 使用:

- Db::getInstance()->getValue($sql) => Returns 1 result
- Db::getInstance()-> getRow($sql) => Returns an array with the first result line
- Db::getInstance()-> executes($sql) => Returns an array of results

使用第三种方法,您应该可以使用限制;这里的更多信息:https://www.prestashop.com/fr/blog/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5

此致

答案 2 :(得分:0)

要获得十大最畅销产品:

 $sql = new DbQuery();
 $sql->select('SELECT id_product, sale_nbr');
 $sql->from('product_sale', 'ps');
 $sql->orderBy('`sale_nbr` DESC');
 $sql->limit(10);
 return Db::getInstance(_PS_USE_SQL_SLAVE_)->executes($sql);