gpt4 book ai didi

php - 随机洗牌而不会再次得到相同的结果

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:33 25 4
gpt4 key购买 nike

id    |  photo title     |  created_date33 |  my family       |  2009 8 0444  |  friends group   |  2009 4 0555  |  beautiful place |  2009 3 0666  |  working late    |  2009 11 07 

我将结果随机化并限制为 1。假设我有 ID 55。如果没有再次获得结果,我将如何获得下一行?

这是对主页的查询

SELECT * FROM data ORDER BY rand() LIMIT 1

对于下一页,我可能会再次得到相同的结果

SELECT * FROM data WHERE id > $n ORDER BY rand() LIMIT 1

最佳答案

重复使用您在 PHP 中生成的种子。

伪代码:

$seed = rand()
$stmt = $mysqli->prepare("SELECT * FROM data ORDER BY RAND(?) LIMIT 1");
$stmt->bind_param($seed);
$stmt->execute()
...

然后当您需要其余行时:

$stmt = $mysqli->prepare("SELECT * FROM data ORDER BY RAND(?) LIMIT 2,1000");
$stmt->bind_param($seed);
$stmt->execute()
...

the mysql manual 中查看有关播种 RAND() 的更多信息.

这种方法的优点是您可以显示任意数量的页面而无需跟踪除最初生成的种子(当然还有您所在的页面)之外的任何内容。

关于php - 随机洗牌而不会再次得到相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com