2011-12-18 60 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

相关问题