Php 检索接下来的15个mysql字段,即使它们的ID不是连续的

Php 检索接下来的15个mysql字段,即使它们的ID不是连续的,php,mysql,sql,limit,Php,Mysql,Sql,Limit,我不知道该如何命名这个问题,因为它有点难以理解 我有一个存储博客文章的数据库表,我正在使用AJAX在页面上创建这些博客文章的无限卷轴。最初,当访问页面时,会显示最近的10个博客 我在MySQL查询中使用$start和$limit变量,以便它知道从哪个博客开始抓取,然后从数据库中抓取多少。我的问题是因为删除博客时,我的ID不是按顺序排列的,所以我不能按博客顺序从博客中选择*。\u ID DESC LIMIT$start,$LIMIT 现在我正在从blog_id的blog中选择*如果MySQL中有分

我不知道该如何命名这个问题,因为它有点难以理解

我有一个存储博客文章的数据库表,我正在使用AJAX在页面上创建这些博客文章的无限卷轴。最初,当访问页面时,会显示最近的10个博客

我在MySQL查询中使用$start和$limit变量,以便它知道从哪个博客开始抓取,然后从数据库中抓取多少。我的问题是因为删除博客时,我的ID不是按顺序排列的,所以我不能按博客顺序从博客中选择*。\u ID DESC LIMIT$start,$LIMIT


现在我正在从blog_id的blog中选择*如果MySQL中有分析函数,那么您可以使用ROW_NUMBER对具有非顺序id的行进行排序。然后在where子句中使用行号

这是使用行号的一般示例:


因此,我无法找出LIMIT$start$LIMIT不起作用的原因,但我可以通过使用以下函数解决此问题:

public function getLastBlogId() {
    $sql = $this->mysqli->query("SELECT * FROM blogs ORDER BY blog_id DESC LIMIT 1");

    $row = $sql->fetch_assoc();

    $num = $this->mysqli->real_escape_string(intval($row['blog_id']));
    $num = $num + 1;
    return $num;
}

要获得表中最高的blog ID,然后将+1添加到表中,这样我就不必使用我想我不明白为什么LIMIT$start$LIMIT方法对您不起作用。仅仅因为删除可能会导致blog_id出现漏洞,并不意味着如果字段是通过自动增量创建的,blog_id就不正常。对此我有点困惑。查询中没有循环构造,因此sql不应该进入无限循环。而且,正如codingbiz所说,非顺序ID也不应该是一个问题。我不知道为什么LIMIT$start$LIMIT方法也不起作用。在尝试使用非顺序ID进行此查询时,我从未遇到过这种情况。不显示循环构造。这是在我的JavaScript中的无限卷轴。当用户到达页面底部时,将执行该查询。如果是,我认为我们不需要使用javascript代码,只需创建一个链接并向我们显示select查询的无限循环。无限循环不在查询中。由于无限滚动,查询被称为无限次,但由于=符号,它重复最后一个条目无限次。
SELECT * FROM
(
SELECT empno, deptno, ename, sal
 , ROW_NUMBER() OVER (ORDER BY ename) Row_Seq 
FROM scott.emp
)
WHERE row_seq BETWEEN 1 AND 3
/

EMPNO    DEPTNO    ENAME    SAL    ROW_NUM
--------------------------------------------
7876    20    ADAMS    1100        1
7499    30    ALLEN    1600        2
7698    30    BLAKE    2850        3
public function getLastBlogId() {
    $sql = $this->mysqli->query("SELECT * FROM blogs ORDER BY blog_id DESC LIMIT 1");

    $row = $sql->fetch_assoc();

    $num = $this->mysqli->real_escape_string(intval($row['blog_id']));
    $num = $num + 1;
    return $num;
}