限制选择哪些行 - mysql

时间:2014-01-08 01:34:35

标签: php mysql

我正在尝试根据用户点击的链接设置查询的LIMIT值。

此代码检查用户是否单击了链接并相应地设置了值:

if(isset($_GET['page']) && $_GET['page']>0){
    $y = $_GET['page'];
    $upper = $y * 10;
    $lower = $upper - 10;
    $limit = "$lower,$upper";
}
else{
    $limit = "0,10";
}

例如,如果链接是"index.php?page=1" 限制为0,10

如果链接是page=2 限制为10,20

查询:

$sql = mysql_query("select * from comments order by time desc limit $limit") or die (mysql_error());

由于某种原因,它不会选择我想要的行。 我做错了什么?

3 个答案:

答案 0 :(得分:4)

不是“低,高”。它是“偏移量,行数”。这意味着您需要模式

  1. 0,10
  2. 10,10
  3. 20,10
  4. 30,10
  5. 等等。

答案 1 :(得分:1)

你的分页逻辑是错误的。

阅读LIMIT条款手册:

  

使用两个参数,第一个参数指定的偏移量   第一行返回,第二行指定最大数量   要返回的行。初始行的偏移量为0(不是1):

$page = isset($_GET['page']) && $_GET['page'] > 0 ? $_GET['page'] : 1;

$per_page = 10;
$offset = ($page - 1) * $per_page;
$limit = "$offset, $per_page";

答案 2 :(得分:0)

LIMIT的第二个参数是您希望查询返回的行数。如果您希望每次最多选择10行,则应将其修改为10

if(isset($_GET['page']) && $_GET['page']>0){
    $y = $_GET['page'];
    $lower = $y * 10 - 10;
    $limit = "$lower,10";
}
else{
    $limit = "0,10";
}