如何限制mysql行以选择最新的50行

时间:2016-05-11 13:19:04

标签: php mysql

如何限制mysql行以选择最新的50行并使用下一个按钮,以便在不知道确切行数的情况下选择接下来的50行?

我的意思是表中的行数可能会增加。好吧,我会清楚地解释一下:我正在使用php mysql html开发一个web应用程序作为我的文档管理系统项目。一切都已完成,但在检索文件时我的意思是可能有数千个文件。

我的信息表中的所有文档都在主页中一次检索,这看起来不太好。所以我想添加页面,以便在第一页中只放置最新的50个文档,接下来的50个是第二个,依此类推。

但是为什么我每次都知道确切的行数,而且每次添加新文档时我都无法更改代码...我认为numrows可能没有用...

请帮帮我......

3 个答案:

答案 0 :(得分:0)

使用php& amp;搜索分页MySQL的。这对你的问题可能会很方便。

要限制mysql查询以获取50行,请使用LIMIT关键字。你可能需要找到&存储最后一行id(第50行),以便您可以在下一页继续第51行到第100行。

发布您对代码所做的工作。请参考whathaveyoutried [dot] com

答案 1 :(得分:0)

您正在寻找的内容称为分页,实现简单分页的最简单方法是在SQL查询中使用LIMIT x , y

你真的不需要你拥有的总行数,只需要两个数字:

  • 您已查询的元素数量,因此您知道必须继续下一个查询的位置。
  • 您要列出每个查询的元素数量(例如50,如您所建议的那样)。

假设你要查询前50个元素,你应该在查询LIMIT 0,50的末尾插入,之后你需要存储你已经查询过50个元素的事实,所以下次将限制更改为LIMIT 50,50时(从元素编号50开始并查询以下50个元素)。

订单取决于插入条目时您所做的字段。通常,您可以更新表格并添加字段created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,然后只使用ORDER BY created,因为从现在开始,您的条目会存储创建它们的确切时间,以便查找最新的表格(如果你有一个AUTO_INCREMENT id你可以寻找更大的价值观。

这可能是使用php和MySQL的这个系统的一个例子:

$page = 1;
if(!empty($_GET['page'])) {
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
    if(false === $page) {
        $page = 1;
    }
}

// set the number of items to display per page
$items_per_page = 50;

// build query
$offset = ($page - 1) * $items_per_page;
$sql = "SELECT * FROM your_table LIMIT " . $offset . "," . $items_per_page;

当我第一次尝试制作这个分页系统时,我发现这个post非常有用,所以我建议你检查一下(是示例的来源)。

希望这对你有所帮助,抱歉,由于我没有你的代码,所以我不能为你提供更好的例子。

答案 2 :(得分:0)

从另一篇帖子https://stackoverflow.com/a/2616715/6257039查看此示例,您可以通过id或者查询中的creation_date desc制作和开始