2011-04-02 185 views
1

好吧,在我的头撞在墙上约2小时后,我需要帮助。我有一个查询,根据用户“追随者”提取“评论”。追随者有一个唯一的ID,可以说只是为了便于使用,他们的ID是4和5.查询返回所有的追随者,所以可能有更多的方式不止两行。该查询创建了一个foreach,我想说,每个“追随者”执行此查询。然后,该查询需要创建一个fetch_assoc(),以便稍后在页面上调用数据。现在我有代码的方式,它只显示从追随者4发布的帖子,而不是5.我尝试过使用计数器来追加变量名称,这样他们就不会每次都被覆盖,但它没有帮助。非常感谢!在嵌套的foreach循环中使用嵌套查询

$sqlb ="SELECT myfriend_ID FROM friends WHERE my_id = '$myuid'"; 
$resultb = mysql_query($sqlb,$db); 
$numa = mysql_num_rows($resultb); 
if($numa) 
{ 
    while(($follower = mysql_fetch_assoc($resultb))) { 
     $followers[] = $follower; 
    } 
} 
$i=0; 
foreach($followers as $follower) 
{ 
    $i++; 
    $fnub = $follower['myfollower_ID'];//this will print 4 and 5 
    $fnum = $fnub; 

    $sql = "SELECT * FROM usr, feed, course WHERE usr.usr_id = '$fnum' AND 
      feed.usr_id = '$fnum' AND course.usr_id = '$fnum' ORDER BY Feed_ID desc"; 
    $result = mysql_query($sql,$db); 
    $num.$fnum = mysql_num_rows($result); 
    if($num.$fnum) 
    { 
     while(($feed = mysql_fetch_assoc($result))) { 
      $feeds[] = $feed; 
     } 
     foreach($feeds as $feed) 
     { 
      echo $feed['comment']; 
     } 
    } 
} 
+0

你应该真的清理你的代码。无用的循环,任务在那里。您在sql查询中选择myfriend_ID,但使用myfollower_ID。并可能$ follower ['myfollower_ID']这是来自其他地方。 – Gaurav 2011-04-02 06:07:41

+0

对,我打算一旦找出如何使它工作,你看到的$ i就是一些尝试追加$ result和$ sql的尝试,因为我尝试使用$ fnum和$ num来做 – Ryan 2011-04-02 06:09:48

+0

发布时有一些东西需要叠加,把代码减少到最低程度是很好的礼节,所以人们不必浪费时间去除所有的垃圾。例如'$ i'在这里完全不相关。 – EboMike 2011-04-02 06:23:07

回答

1
$sqlb ="SELECT myfriend_ID FROM friends WHERE my_id = '$myuid'"; 
$resultb = mysql_query($sqlb,$db); 
$follower = array(); 

if(mysql_num_rows($resultb)) 
{ 
    while(($follower = mysql_fetch_assoc($resultb))) { 
     $fnum = $follower['myfriend_ID'];//what is the column name 
     $sql = "SELECT * FROM usr, feed, course WHERE usr.usr_id = '$fnum' AND feed.usr_id = '$fnum' AND course.usr_id = '$fnum' ORDER BY Feed_ID desc"; 
     $result = mysql_query($sql,$db); 
     if(mysql_num_rows($result)) 
     { 
     while(($feed = mysql_fetch_assoc($result))) { 
      echo $feed['comment']; 
     } 
    } 
} 

而且你必须这两个查询合并成单一。但我在SQL中不太好。 也许一些人可以帮助。

0

您指定$ i,然后您在foreach中增加$ i,但是您从不使用$ i来做其他任何事情,我不确定该计数器应该做什么。我不确定为什么给第二个变量赋值$ fnub,为什么不每次都使用$ fnub呢?后来你使用了(我们只能假定的是)一个空的$ num变量,并在它前面加上$ fnum - 我不知道为什么 - 甚至为什么你必须为num行分配任何东西,只需使用if因为这看起来是你使用$ num。$ fnum的唯一实例。

你可以完全取出你最后一次的foreach,并将它的内容移到前面的while循环中,因为它们都在迭代相同的数据,只是赋值,然后echo $ feed ['comment'] out right在那里,它会移动指针并为它自己准备下一个值。

+0

是的,它的马虎,但我本来应该是为了追加其他变量,它没有工作,所以我把它拿出来,除了我忘了修剪一些东西像$ i和$ fnum,它们大多只是实验性的 – Ryan 2011-04-02 06:17:55

+0

我试图得到的一点是,如果清理它,可能会更容易地发现问题所在。现在很难阅读,因为你在末尾用同样的东西命名foreach,然后再使用这些名称,等等。使它很难记住什么是一切,什么东西都应该在哪里去等等 – linus72982 2011-04-02 06:21:48