我有表格帖子,用户可以通过关键字查找帖子。
所以,我使用类似关键字的SQL查询和RAND()的命令。 当显示结果时,我使用GridView和Pagination数据。并且有问题,当去另一页时。第1页的示例使用相同的关键字转到第2页。我将再次查询并由Rand()订购。因此,第1页中的某些数据可以显示在第2页中。 那些数据重复而且不好。
那么我该如何解决这个问题呢。和goto page other时的数据查询与第一个查询中的数据相同。
我在项目中使用Yii2。
答案 0 :(得分:0)
好的,我想我明白了。示例MySQL查询:
SELECT * FROM articles WHERE name LIKE '%tag%' LIMIT 0, 20;
或者你可以使用MySQL的MATCH()
而不是LIKE
,这没关系。然后LIMIT 0, 20
是限制,显示第一页的结果数量。对于第二页,它应该是LIMIT 1, 20
。这个你知道我除外。然后你在PHP中得到一个结果数组,并希望得到随机值。 PHP有这样的功能,它被称为 suffle() 。
因此,您只需使用shuffle($results);
,然后就可以使用foreach或任何用于打印数据的内容进行打印。请注意shuffle()
返回布尔值,因此请勿使用$results = shuffle($results);
。希望这会有所帮助。