Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL:获取下一个“n”结果_Php_Mysql_Sql - Fatal编程技术网

Php MYSQL:获取下一个“n”结果

Php MYSQL:获取下一个“n”结果,php,mysql,sql,Php,Mysql,Sql,现在我有一个PHP脚本,它使用以下命令从MYSQL数据库获取前三个结果: SELECT * FROM table Order by DATE DESC LIMIT 3; 在该命令之后,我希望PHP获取接下来的三个结果,最初我打算使用: SELECT * FROM table Order by DATE DESC LIMIT 3,3; 但是,这两个命令之间会有延迟,这意味着在延迟期间很可能会将新行插入表中。我的第一个想法是存储最后一个结果的日期值,然后包括WHERE DATE>$stored\

现在我有一个PHP脚本,它使用以下命令从MYSQL数据库获取前三个结果:

SELECT * FROM table Order by DATE DESC LIMIT 3;
在该命令之后,我希望PHP获取接下来的三个结果,最初我打算使用:

SELECT * FROM table Order by DATE DESC LIMIT 3,3;
但是,这两个命令之间会有延迟,这意味着在延迟期间很可能会将新行插入表中。我的第一个想法是存储最后一个结果的日期值,然后包括WHERE DATE>$stored\u DATE,但是如果条目3和条目4具有相同的日期,它将跳过条目4并从第5个开始返回结果。使用主键字段可以避免这种情况,主键字段是一个自动递增的整数

我不确定哪种方法是最好的,但我觉得应该有一个更优雅、更稳健的解决方案来解决这个问题,尽管我正在努力思考这个问题

示例表:

------------------------------------------- | PrimaryKey | Data | Date | ------------------------------------------- | 0 | abc | 2014-06-17 11:43:00 | | 1 | def | 2014-06-17 12:43:00 | | 2 | ghi | 2014-06-17 13:43:00 | | 3 | jkl | 2014-06-17 13:56:00 | | 4 | mno | 2014-06-17 14:23:00 | | 5 | pqr | 2014-06-17 14:43:00 | | 6 | stu | 2014-06-17 15:43:00 | -------------------------------------------
其中Data是我想要的列。

最好使用主键并选择like

SELECT * FROM table WHERE pk < $stored_pk Order by DATE DESC LIMIT 3;

如果您已经自动生成了PK,那么您应该使用ORDER BY PK,这样会更快

根据脚本的功能,我可以想到两个选项:

您可以使用事务:在事务中执行这些查询将为您提供一致的数据视图

或者,您可以使用:

SELECT * FROM table Order by DATE DESC;

并且只获取您需要的结果。

发布您的表结构和一些示例数据。脚本正在做什么?为什么这个问题被标记下来?PHP脚本将数据发送到另一个页面,在该页面上以HTML格式呈现并显示给用户。当用户单击next时,PHP将获得接下来的3个结果并输出它们。由于多个用户将同时使用它,因此不希望所有结果都存储在PHP中,因为数据库可能会变得相当大。大多数数据库库不会将所有记录直接拉入PHP。您需要请求下一条记录,即调用$mysqli->fetch_assoc或任何适合您使用的代码的方法。谢谢,关于排序的观点很好。我不确定为什么要按日期排序。