我有一个从数据库中随机获取两行的查询:
$query = "SELECT * FROM foo ORDER BY RAND() LIMIT 2";
$result = mysql_query($query);
我想要的是记住这两个choosen项,以便它们可以在下一页再次显示,我本以为这可以通过使用RAND()信息更新另一个表来完成,但对于我来说,我无法思考如何去做,也无法找到如何去做的信息。
编辑:
总体思路是显示两个新项目以及最后两个项目。
编辑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循环中调用,因此像我之前所说的会话是当前项信息,而不是前一个如何“存储”以便显示前一个?编辑3:我将上面的foreach卡在循环之外,但它只返回1个项
最佳答案
你不能在接下来的两页中得到相同的order by rand()
——这是rand首先排序的全部要点。
如果您想记住下一页的数据,为什么不将输出粘贴到$_SESSION
中,并简单地引用它呢?
话虽如此,您可以在rand()
函数中添加一个值,该值将为您提供相同的结果,但这将打开蠕虫的容器,您将需要开始将相同的种子传递到其他页面,您可能需要将其存储在order by rand(3)
中,这样您就可以在第一个方格中结束。
编辑:如果要添加两个新项,请按原样使用查询,并继续将数据插入$_SESSION
变量。你可以在里面存储数组,所以它应该很有魅力。将数据拉回来,将其添加到会话中,显示会话中的所有结果。下一页,获取两个新结果,添加到会话,显示会话中的所有结果。
编辑2:
首先,确保在每一页上都开始会话:
session_start();
您需要像对待其他数组一样对待
$_SESSION
数组:$query = "SELECT * FROM foo ORDER BY RAND() LIMIT 2";
$result = mysql_query($query);
在输出之前不确定如何遍历结果,因此请根据需要应用:
howeverYouLoopYouQueryResults
{
$_SESSION['lastitems'][]=$rowFromYourResult;
// This appends the row to the end of the array
}
现在,当您开始显示数据时,您可以按照以下行执行操作:
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'];
}