按降序调用第10行到第20行

时间:2015-07-02 04:07:42

标签: php pdo

我正在使用PDO。我需要在使用DESC进行排序后调用第10行到第20行的数据?我怎么能这样做?

$sql = "SELECT item, price, availability 
         FROM items 
           WHERE category = :category 
             ORDER BY item DESC";
$stmt= $connect->prepare($sql);
$stmt->execute(array(':category'=>"fruits"));
$rslt = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($rslt as $val){
  $data[] = $val; 
}

2 个答案:

答案 0 :(得分:0)

更新您的sql。

SELECT item, price, availability FROM items WHERE category = :category ORDER BY item DESC limit 9,10

答案 1 :(得分:0)

所以我想我会发布这个作为答案,因为我的评论我觉得有些混乱而且有一个拼写错误(引用和链接都没有错误)。

Mysql有一个名为limithttps://dev.mysql.com/doc/refman/5.0/en/select.html的函数。

根据文档

  

LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。

因此,要返回第10行到第20行,您可以添加

  

限制9,11

到查询结尾。

根据您的代码:

$sql = "SELECT item, price, availability 
        FROM items 
        WHERE category = :category 
        ORDER BY item DESC
        limit 9, 11";
$stmt= $connect->prepare($sql);
$stmt->execute(array(':category'=>"fruits"));
$rslt = $stmt->fetchAll(PDO::FETCH_ASSOC);  
foreach ($rslt as $val){
    $data[] = $val; 
}

请注意11之后的9,因为我们要从第10行开始并返回11行(例如10-20)。