2011-04-02 87 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