Mysql查询前进和后退

时间:2012-03-11 15:26:59

标签: php mysql

我想知道在行之间向前或向后查询数据的数据库查询命令是什么?就像前进和后退按钮一样。有人能举个例子吗?感谢。

例如:

$sql_xxxx = mysql_query("SELECT * FROM xxxx WHERE id='$xxx'") or die  (mysql_error());
$row_xxxx = mysql_fetch_array($sql_xxxx);

现在我需要两个相同的查询但是一个向前和另一个向后的数据。

4 个答案:

答案 0 :(得分:0)

您可以在查询中指定LIMIT,这会产生特定的行数。例如,当您使用LIMIT 100, 10结束查询时,您将从第100行开始获得10个结果。

这样,您可以构建上一个/下一个按钮,单击该按钮可以检索上一页或下一页结果。

但在大多数其他情况下,您只需查询所需的所有内容并运行结果集。您可以通过查询结果来执行此操作,并fetching每个结果的下一行。

答案 1 :(得分:0)

如果您使用LIMIT关键字,数据库将很乐意返回数据的“页面”,例如;

SELECT * FROM posts ORDER BY post_time LIMIT 40,20;  -- will return rows 41-60.

您只需将第一个LIMIT号码设置为page number * page size,将第二个号码设置为page size(第一页的页码为0)即可利用PHP中的号码。在示例中,页面大小为20,页面编号为2(第三页),结果将是第三页的所有帖子。

数据库方面没有其他内容,你只需要从PHP中充分利用它。

答案 2 :(得分:0)

如果我正确理解了这个问题,听起来你正试图在你的查询中实现分页,你会使用'limit'子句,如下所示:

SELECT * FROM `your_table` LIMIT 5, 5 

这将显示记录6,7,8,9和10

这里有更多documentation

答案 3 :(得分:0)

由于您标记了PHP和MySQL,我想我可以猜到您要做的事情;

通常您可以使用MySQL中记录的ID来控制它,例如:

SELECT * FROM MYTABLE WHERE ID = 1;

在PHP中,您可以构建动态查询以获得不同的结果,同时只需更改变量的值。

让我们说现在我们想要采用相同的查询并使其动态化:

$id = 1;
$query = "SELECT * FROM MYTABLE WHERE ID = $id ";

只要你执行这个查询,它就会给你ID = 1的行,因为它现在从$ id变量中获取值。

如果你想要下一行,那么你执行相同的查询,但现在$ id必须有下一个值。

$id = 2;

拥有“NEXT”和“BACK”按钮可以只是在$ id变量中添加或减少1。 不过,这只是一个例子。在大多数情况下,你不应该使用id那样,因为你不应该假设所有id都存在,记住存在“DELETE”;

因此,您可以尝试更好地执行一个小查询来查找下一个值:

前往:

$query= "SELECT MIN(ID) FROM MYTABLE WHERE ID > $id"
// This will get you for sure the closest id next to the current one

and to go back:
$query= "SELECT MAX(ID) FROM MYTABLE WHERE ID < $id"

我希望这有帮助,

此致

相关问题