我不知道如何命名这个问题,因为它有点难以理解;
我有一个存储博客文章的数据库表,我正在使用 AJAX 在页面上创建这些博客文章的无限滚动。最初,当访问该页面时,会显示 10 个最近的博客。
我在 MySQL 查询中使用$start
和$limit
变量,所以它知道从哪个博客开始抓取,然后从数据库中抓取多少。我的问题是因为我的 ID 没有按顺序删除博客,所以我不能只做一个标准的SELECT * FROM blogs ORDER BY blog_id DESC LIMIT $start, $limit
.
现在我正在做SELECT * FROM blogs WHERE blog_id <= $start ORDER BY blog_id DESC LIMIT $limit
它返回所有博客,但它为数据库中的最后一个博客创建了一个无限循环。如果我删除=
from<=
那么它不会有无限循环,但它会跳过最近的博客。
如何在 SQL 语句中使用$start
and$limit
子句从数据库中获取所有博客,包括最近的博客,而不会导致无限循环?
编辑:这是执行查询的 JavaScript 代码:
var loading = false;
$(window).scroll(function(){
var h = $('.post-container').height();
var st = $(window).scrollTop();
if(st >= 0.6*h && !loading && h > 400){
loading = true;
$('#ajaxLoader').show();
$.ajax({
url: "/ajax/blog.process.php?lastid=" + $(".post:last").attr("id"),
success: function(html){
if(html){
$(".post-container").append(html);
$('div#ajaxLoader').hide();
}else{
$('div#ajaxLoader').html('<center>No more posts to show.</center>');
}
loading = false;
}
});
}
});
编辑 x2:
如果我像这样切换$start
和$limit
变量,LIMIT $limit,$start
那么我开始得到结果,但它们是最旧的结果......我想要通过按降序获取 ID 的最新结果