Php 警告:无法在中获取mysqli\u结果。。。使用$\u会话的结果集

Php 警告:无法在中获取mysqli\u结果。。。使用$\u会话的结果集,php,mysql,ajax,session,Php,Mysql,Ajax,Session,当我试图从结果中获取一行时,我遇到了这个错误。下面是产生错误的代码块 $count = 0; @ session_start(); $result = $_SESSION['results']; $str = ""; while(($row = mysqli_fetch_array($result)) && $count<= 15){

当我试图从结果中获取一行时,我遇到了这个错误。下面是产生错误的代码块

            $count = 0;
            @ session_start();
            $result = $_SESSION['results'];
            $str = "";

            while(($row = mysqli_fetch_array($result)) && $count<= 15){

                //do something;
                $count++;
           }
下面是进行查询并将结果存储到会话中的代码块

$mysql = new MySQLInterface();
$result = $mysql->run_query($query);

       if($result === false){

            //echo "result is boolean and false";
       }else{
            $count = 0;
            while(($row = mysqli_fetch_array($result)) && $count<= 15){

                //do stuff
                $count++;
            }
           @ session_start();
           $_SESSION['results'] = $result;
       }
在这个测试用例中,初始结果返回了18行。在第一次使用结果时,我使用了18行中的16行,然后将其存储到会话中。稍后,我从会话中提取结果,并尝试获取剩余的2行,此时将抛出错误

将结果存储在会话中是否会导致此错误?或者在存储结果后尝试提取行时是否需要执行其他操作?我在第二次尝试访问结果时也在使用AJAX,我不知道这是否会影响它


关于我可能做错了什么有什么想法吗?

您不能在会话上运行MYSQLI命令。即使您可以将$result对象存储到会话中,但在存储时它会被序列化,这意味着它会保留信息,但不会保留整个函数集等

通过迭代结果,将其放入数组,然后将数组存储在会话中,可以实现类似的效果。然后,您可以使用foreach或for循环轻松地迭代结果

然后显示数据:

$myStart=0;
for($i=$myStart;$i<$myStart+15;$i++)
{
    echo $row['index_you_want']."<br>";
}

$\u SESSION['query']=从表中选择*;,如果使用mysqli_query$_SESSION['query'],则会运行该命令@DarylGill天哪,真的吗?我敢打赌mysqli_查询需要连接对象之类的东西,它不能序列化到会话中并且仍然运行?@user2947268是的,备用[]将在数组的末尾追加一个新元素,这意味着它是一个很好的索引。如果没有指定,链接将根据上一次成功的查询自动附加到查询中。我在此行中遇到此错误:$\u SESSION['results'][]=$row;致命错误:无法将mysqli_result类型的对象用作数组。当试图存储到会话中时,表示我不能使用类型mysqli\u result。
$myStart=0;
for($i=$myStart;$i<$myStart+15;$i++)
{
    echo $row['index_you_want']."<br>";
}