在会话中存储随机查询结果,以保持查询结果的顺序


storing random query result in session to preserve order of result

我想在会话中存储我的查询结果,当用户刷新页面时,我想向他显示存储在会话中的相同结果。如果会话为空,则再次查询,当用户离开页面时,会话应被删除。我真正想做的是

if(!isset($_SESSION['result']))
{//if session is null then query database and store result in session
$query="SELECT * from table order by rand()";
$result=mysqli_query($connection,$query);
$_SESSION['result']=$result;
while ($read_all_data = mysqli_fetch_assoc($_SESSION['result']))
{
//echo data
}
else //if there is result in session then dont query just show me data
{
while ($read_all_data = mysqli_fetch_assoc($_SESSION['result']))
{
echo //same data
}
}
我做错了什么事。我从数据库中选择随机行。我想保持这种秩序。按刷新按钮
不会得到新行

您正在存储一个mysqli_result对象,并且没有办法序列化它。一般情况下,不能序列化外部资源。

把所有的数据放在一个数组中,并存储在相应的位置。

if(!isset($_SESSION['result'])) {
    $query = "SELECT * from table order by rand()";
    $result = mysqli_query($connection, $query);
    $all = array();
    while ($row = mysqli_fetch_assoc($result)) {
        $all[] = $row;
    }
    $_SESSION['result'] = $all;
}
foreach ($_SESSION['result'] as $data) {
    // work with $data
}