我想知道在行之间向前或向后查询数据的数据库查询命令是什么?就像前进和后退按钮一样。有人能举个例子吗?感谢。
例如:
$sql_xxxx = mysql_query("SELECT * FROM xxxx WHERE id='$xxx'") or die (mysql_error());
$row_xxxx = mysql_fetch_array($sql_xxxx);
现在我需要两个相同的查询但是一个向前和另一个向后的数据。
答案 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"
我希望这有帮助,
此致