2

当我尝试从结果中获取一行时出现此错误。这是产生错误的代码块。

            $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,我不知道这是否会影响它。

关于我可能做错了什么的任何想法?

4

1 回答 1

1

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

您可以通过遍历结果,将它们放入数组,然后将数组存储在会话中来实现类似的效果。foreach然后,您可以使用or循环轻松地遍历结果for

session_start();
$result = $mysql->run_query($query);
if($result === false)
{
    //echo "result is boolean and false";
}
else
{
    while($row = mysqli_fetch_array($result))
    {
        $_SESSION['results'][] = $row;
    }
}

然后显示数据:

$myStart=0;
for($i=$myStart;$i<$myStart+15;$i++)
{
    echo $row['index_you_want']."<br>";
}
于 2013-11-03T23:02:47.140 回答