while循环只检索一个结果

时间:2011-06-30 22:26:56

标签: php mysql while-loop

更新:似乎仍无法弄明白。如果有人可以伸出援手,我们将不胜感激^^。

我遇到了问题,我不确定我的代码在哪里发生故障。我有一个'跟随'功能,您可以跟随不同的注册用户。他们关注的用户ID存储在数组中(follower_array)。它从数组中检索每个成员,但是每个成员都跟踪而不是显示所有内容,它只显示每个成员的最新成员。

$broadcastList= "";

if ( $follower_array != "" ) {

  $followArray = explode(",", $follower_array);
  $followCount = count($followArray);   
  $i = 0;
  $broadcastList .= "<table>";

  foreach( $followArray as $key => $value ) {

    $i++;
    $sqlName = mysql_query("
        SELECT username, fullname 
          FROM members 
         WHERE id='$value' 
         LIMIT 1
    ") or die ("error!");

    while ( $row = mysql_fetch_array($sqlName) ) {
      $friendUserName = substr($row["username"],0,12);
    }

    $sqlBroadcast = mysql_query("
        SELECT mem_id, bc, bc_date, device 
          FROM broadcast 
         WHERE mem_id='$value' 
      ORDER BY bc_date ASC 
         LIMIT 50
    ") or die ("error!");

    while ( $bc_row = mysql_fetch_array($sqlBroadcast) ) {
      $mem_id  = $bc_row['mem_id'];
      $bc      = $bc_row['bc'];
      $dev     = $bc_row['device'];
      $bc_date = $bc_row['bc_date'];
      $broadcastList .= "<td><a href='member.php?id=' .$value. ''>
      $friendUserName</a> &bull; $when_bc &bull; Via: $dev <b>$bc</b></td></tr>";
    }
    broadcastList .= "</table>";
  }
}

所以,它正在完全检索成员,但不会超过他们最新的“广播”。任何见解将不胜感激..谢谢!

2 个答案:

答案 0 :(得分:2)

以下是发生的事情:

while( $row = some_next_result_function() ){
    $result = $row["thing"];
}

每次都会覆盖$result,所以你只会得到最后的结果。

您需要制作一个列表并添加到其中。

答案 1 :(得分:0)

我要在黑暗中拍摄:

$broadcastList .= "<td><a href='member.php?id=' .$value. ''>
  $friendUserName</a> &bull; $when_bc &bull; Via: $dev <b>$bc</b></td></tr>";

那条线几乎错过了一个起始的“tr”元素。你确定因为错误的html标记而没有简单地显示内容吗?

此外:

broadcastList .= "</table>";

你错过了$那里;)。

我不知道这是否可以解决它,甚至可以帮助你;但我当然希望如此:)。另外;您还可以检查HTML源代码以查看条目是否真的不存在(请参阅第一条评论)。