Php MYSQL:获取下一个“n”结果
现在我有一个PHP脚本,它使用以下命令从MYSQL数据库获取前三个结果: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\
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或任何适合您使用的代码的方法。谢谢,关于排序的观点很好。我不确定为什么要按日期排序。