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