当我尝试从结果中获取一行时,我收到此错误。这是产生错误的代码块。
$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,我不知道是否会影响它。
关于我可能做错什么的任何想法?
答案 0 :(得分:1)
您无法在会话上运行MYSQLI命令。即使您可以将$result
对象“存储”到会话中,它也会被序列化,这意味着它会保留信息,但不会保留整个函数集等。
您可以通过迭代结果,将它们放入数组,然后将数组存储在会话中来实现类似的功能。然后,您可以使用foreach
或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>";
}