如何使用MYSQLI store_result(和dataseek?)对随机结果进行分页


How to use MYSQLI store_result (and dataseek?) to paginate random results?

我需要使用PHP提取一个数据集并随机排序。每次拉动时,我都需要一个不同的随机顺序。

一旦数据被提取,我就使用ajax/jquery一次提取12个结果。因此,我必须继续使用相同的结果集,根据分页,一次只提取12条记录。

有人能向我解释一下如何使用mysqli/php吗?我认为它会使用store_result,可能还会使用data_seek。但我希望这里有一些经验的人能为我指明正确的方向。

我当前的查询。。。

SELECT * FROM mytable WHERE status='active' limit 0,12

我用MD5函数做过一次。您使用php生成一个随机种子(salt),并将其附加到所有ID中,例如:

SELECT * FROM mytable WHERE status='active' ORDER BY MD5(CONCAT(id, :salt)) DESC LIMIT 0,12

(例如,将盐替换为"aE41n")

然后,您所要做的就是将salt存储在每个用户的会话中。

考虑到性能,我不知道这是否是最好的解决方案,但我希望它会有所帮助。

所以我必须继续使用相同的结果集

这是错误的假设。当您调用下一页时,没有旧的结果集。

所以,你最好坚持mimipc的解决方案,它非常聪明。