【发布时间】:2023-04-02 15:06:01
【问题描述】:
我有这个查询,它从数据库中获取 2 个随机行:
$query = "SELECT * FROM foo ORDER BY RAND() LIMIT 2";
$result = mysql_query($query);
我想要的是记住 2 个选定的项目,以便它们可以在下一页上再次显示,我的想法是通过使用 RAND() 信息更新另一个表来完成,但为了我的一生想不出怎么做,也找不到怎么做的信息。
编辑: 总体思路是显示 2 个新项目以及最后 2 个项目。
编辑 2:
好的,看起来需要使用 SESSIONS 来完成,到目前为止我已经想出了这个,但结果是当前的项目信息,而不是以前的
$item_array = array($item_id);
$_SESSION['lastitems'] = $item_array;
foreach($_SESSION['lastitems'] as $key=>$value) {
echo $value . ' <br />';
}
问题是我认为 $item_id 实际上是 $row['itemid'] 并且只能从 while 循环中调用,因此像我之前所说的 SESSIONS 是当前项目信息而不是以前的我如何“存储”所以要显示以前的?
编辑 3:我将上面的 foreach 卡在循环之外,但它只返回 1 个项目
【问题讨论】:
-
不可能。
order by rand()为在准备结果集时做出的EVERY 排序决策生成一个新的随机数。这不是一个贯穿整个操作的数字。 -
查看我对 Fluffeh 的第一条评论
-
请注意
order by rand()即使有限制也是一个非常慢的操作,特别是如果你使用一个大表,MySQL仍然会读取整个表,然后将返回的结果限制为一条记录。 -
您有什么建议可以替代我的查询?