php mysql:记得以前的RAND()

Ann*_*kic 2 php mysql session

我有这个查询从数据库中取出2个随机行:

  $query  = "SELECT * FROM foo ORDER BY RAND() LIMIT 2";
  $result = mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

我想要的是2个选择的项目被记住,以便它们可以在下一页再次显示,我有这个想法,这将通过更新另一个表与兰德()信息完成,但为我的生活不能想到如何要做到这一点,我也无法找到有关如何做到这一点的信息.

编辑: 总体思路是显示2个新项目以及最后2个项目.

编辑2:

好吧看起来它需要使用SESSIONS完成,我到目前为止已经提出了这个但结果是当前的项目信息而不是之前的

$item_array = array($item_id);
$_SESSION['lastitems'] = $item_array;

foreach($_SESSION['lastitems'] as $key=>$value) {
 echo $value . ' <br />';
}
Run Code Online (Sandbox Code Playgroud)

问题是我认为$item_id实际上$row['itemid']只能从while循环中调用,因此我之前说的SESSIONS是当前的项目信息而不是之前的如何"存储"以便显示之前的?

编辑3:我将上面的foreach卡在循环外但它只返回1项

Flu*_*feh 5

你不能order by rand()在随后的两个页面中得到相同的内容 - 这就是rand首先排序的重点.

如果你想记住下一页的数据,为什么不把输出粘在一个$_SESSION并简单地在那里引用它?

话虽如此,你可以rand()使用一行中的函数对函数进行种子处理,order by rand(3)这将给你相同的结果 - 但是这会打开你需要开始将相同的种子传递给其他页面的蠕虫病毒 - 你将会可能必须存储在一个$_SESSION所以你最终在一个方块.

编辑:如果要添加2个新项目,请按原样使用查询,并继续将数据插入$_SESSION变量中.你可以在那里存储数组,所以它应该是一个魅力.拉回数据,将其添加到会话中,显示会话中的所有结果.下一页,获取两个新结果,添加到会话,显示会话中的所有结果.

编辑2:

首先,确保在每个页面上关闭会话:

session_start();
Run Code Online (Sandbox Code Playgroud)

您希望$_SESSION像处理任何其他数组一样处理数组:

$query  = "SELECT * FROM foo ORDER BY RAND() LIMIT 2";
$result = mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

不确定如何在输出之前迭代结果,因此请按照您的意愿应用:

howeverYouLoopYouQueryResults
{
    $_SESSION['lastitems'][]=$rowFromYourResult;
    // This appends the row to the end of the array
}
Run Code Online (Sandbox Code Playgroud)

现在,当您显示数据时,您可以执行以下操作:

foreach($_SESSION['lastitems'] as $key=>$value) {
    echo $value . ' <br />';
    // Keep in mind that it will be storing ALL the 
    // items from the row because you used 'select *'
    // You can see what you selected with:
    print_r($_SESSION['lastitems'];
}
Run Code Online (Sandbox Code Playgroud)