【问题标题】:Result is empty after while loopwhile循环后结果为空
【发布时间】:2012-05-20 21:39:20
【问题描述】:

为什么这不可能?有什么办法可以让resolut不为空吗?

$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'];

感谢您的宝贵时间

【问题讨论】:

  • 回复 Colin 所说的:例如,您明确表示 this answer 在那里回答了您的问题。

标签: php mysql


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这一行:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-12-05
        • 2019-12-19
        • 2018-06-29
        • 2014-06-20
        • 1970-01-01
        • 1970-01-01
        • 2015-10-31
        • 1970-01-01
        • 2017-10-20
        相关资源
        最近更新 更多