0

我尝试使用 ORDER BY rand() 来随机化从我的 php 网站中的 MySQL 表中获取的数据。但是,问题是,在我转到下一页后,第 1 页的一些数据出现在第 2 页中,依此类推。我尝试在网上搜索随机化的 php 版本。但是,我找不到它。谁能帮我解决这个问题?谢谢 :D

4

5 回答 5

1

你可以通过仍然使用 SQL-rand() 来做到这一点。

不要调用 rand() 为空,而是使用种子调用它,它保持不变。在 php.ini 中随机生成该种子。

例如,ORDER BY rand(5)将始终返回相同的订单。

如果您使用 Ajax 调用来加载其他页面,请在每次调用时提交相同的种子。如果它是在每个页面切换时重新加载页面,您可以使用 GET/POST 发送它以使其保持不变。

于 2012-11-22T09:36:26.940 回答
0

为什么要对随机数据进行分页?

但是...如果您仍然想这样做,您可以使用 POST 请求从一个页面移动到另一个页面。但这仍然是无法使用的东西。

于 2012-11-22T09:34:02.383 回答
0

看来您正在 php.ini 中搜索类似 shuffle() 的函数。将返回的数据存储在数组中并使用 shuffle(array)

于 2012-11-22T09:35:18.870 回答
0

如果您每次都计算随机数,很明显您在其他页面上也会有相同的值。您需要获取一次随机数并将其传递给其他站点,例如。每个 HTTP-Get。

使用一些代码,有人可以为您提供更多帮助;)。

于 2012-11-22T09:30:54.483 回答
0

我想您LIMIT x,y在查询中使用进行分页。因此,一种可能的解决方案SEED是在您的中使用 aORDER BY并通过 SESSION 或通过 GET 传递它

例子:

$seed = isset($_SESSION['seed'])? $_SESSION['seed'] : mt_rand();
$_SESSION['seed'] = $seed;
$qry = "SELECT * FROM `table` ORDER BY RAND($seed) LIMIT 0,5";
于 2012-11-22T09:33:51.870 回答