我正在尝试根据用户点击的链接设置查询的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());
由于某种原因,它不会选择我想要的行。 我做错了什么?
答案 0 :(得分:4)
不是“低,高”。它是“偏移量,行数”。这意味着您需要模式
等等。
答案 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";
}