2011-12-18 102 views
0

我試圖建立一個系統的朋友,我的網站,它是建立了這樣的事情:MySQL的 - 獲取多個值同一列

User's Table: 
id 
name 

Friendship Table: 
member1 
member2 

所以,我想的是,當我有值像這樣(的member1是用戶的ID和member2是朋友的ID:

member1 - member2 
1   2 
1   3 
1   5 

我希望能夠讓所有的用戶(例如在1號)朋友的IDS,但是當我使用mysql_fetch_assoc在PHP我只有一個member2 ID,所以即使member1在他的朋友列表中有2,3和5,我也只能用ge t他朋友的ID中的一個。有什麼方法可以解決這個問題嗎,以便我可以得到他朋友的所有ID? 謝謝

+0

那麼,你會得到什麼輸出?我不確定你的意思是'但是當我在PHP中使用mysql_fetch_assoc時,我只能獲得其中一個member2 ID'。你一次只能得到一個,還是一個? – Frank 2011-12-18 20:42:21

回答

0

比方說您想獲得友誼表。該表具有列:member1和member2。要獲得基於成員1的member2值,可以使用sql join語句,或者使用sql join語句。

<?php 
$q1 = mysql_query("SELECT * FROM user_table"); 
while($r1 = mysql_fetch_assoc($q1)) 
{ 
    $q2 = mysql_query("SELECT * FROM friendship_table WHERE member1='".$r1['id']."'"); 
    while($r2 = mysql_fetch_assoc($q2)) 
    { 
     echo $r2['member2']; 
    } 
} 
?> 

或者使用sql連接語句。

<?php 
$q = mysql_query("SELECT * FROM user_table JOIN friendship_table WHERE user_table.id=friendship_table.member1"); 
while($r = mysql_fetch_assoc($q)) 
{ 
    echo $r['member2']; 
} 
?> 
+0

我正在使用,但我仍然只有一個朋友ID,而不是所有的朋友ID。 – randomphp 2011-12-18 20:05:42

+0

什麼是你的SQL查詢。對於while循環,我將使用:「SELECT member1,member2 FROM friendship_table WHERE member1 = 1」,然後使用while循環獲取提取值。 – 2011-12-18 20:12:53

+0

我正在使用相同的查詢 – randomphp 2011-12-18 20:19:44

1

由於任何體面的PHP數據庫教程將顯示,呼叫mysql_fetch_assoc()在循環中,直到它返回false

+0

我正在使用while($ row = mysql_fetch_assoc($ query)){...}來做到這一點,但我仍然只獲得一個朋友ID。有任何想法嗎? – randomphp 2011-12-18 20:04:41

+0

一次只能得到一個。如果你需要一次處理多個數據,那麼你需要存儲它們,然後處理。 – 2011-12-18 20:06:49

+0

我不確定我是否理解,我是初學者。你能告訴我你的意思嗎?謝謝 – randomphp 2011-12-18 20:08:47

0

如果在Web服務器上的處理是少的瓶頸比帶寬到MySQL服務器,使用

SELECT GROUP_CONCAT(member2) FROM Friendship where member1=... 

然後

$ids=explode(',',$resultfield) 
在PHP

相關問題