while循环后结果为空

时间:2012-05-20 21:39:20

标签: php mysql

为什么这不可能?有什么方法可以让解析不是空的吗?

$sqlAllInfo = "SELECT item1, item2 FROM example";
$resAllInfo = mysql_query($sqlAllInfo);

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){

    echo $rowAllInfo['item1'];

}

$rowAllInfo = mysql_fetch_assoc($resAllInfo);

echo $rowAllinfo['item2'];

感谢您的时间

3 个答案:

答案 0 :(得分:2)

不,在while循环后结果将始终为空,因为while循环从结果资源中提取所有值。
while循环继续循环,同时仍有信息要提取,并将在完成时完成它是空的或发生错误时

如果你想获得最后一个条目 $ rowAllInfo仍然包含最后一个条目;)

答案 1 :(得分:2)

您正在使用while 循环遍历结果集,直到不再有结果。当while返回mysql_fetch_assoc时,false循环退出,因为没有更多结果。再次呼叫mysql_fetch_assoc仍然意味着没有更多结果。

答案 2 :(得分:2)

这一行:

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){

rowAllInfo分配一个新值,然后检查它是否仍为“true”-ish(因为PHP可以是“true”;-))

现在,在获取最后一行之后,mysql_fetch_assoc()将返回false,然后将其分配给$ rowAllInfo。由于$ rowAllInfo现在为“false”,循环将不再执行,但是 - 看 - 已经太晚了!您的变量已经分配了值false

即便如此,您再次致电mysql_fetch_assoc()。但是,由于您已经获取了循环中的所有行,因此不再有行,并且$rowAllInfo再次设置为“false”。

所以,无论你想做什么 - 这可能不是你的方式。实现我理解您尝试做的一个常用方法如下:

$allRows = array();
while( $row = mysql_fetch_assoc($res) ) {
    $allRows[] = $row;
}

// show the array we just created...
echo print_r( $arrRows, 1 );