MySQL - 为同一列获取多个值

时间:2011-12-18 19:50:59

标签: php mysql

我正在尝试为我的网站建立一个朋友系统,它的设置如下:

User's Table:
id
name

Friendship Table:
member1
member2

所以我想要的是当我有这样的值时(member1是用户的id而member2是朋友的id:

member1 - member2
1           2
1           3
1           5

我希望能够获得所有用户(示例中的id为1)朋友的ID。但是当我在PHP中使用mysql_fetch_assoc时,我只得到一个member2 id。所以即使member1在他的朋友列表中有id 2,3和5,我也只能得到他朋友的一个ID。有没有办法解决这个问题,以便我可以得到他朋友的所有ID? 感谢

3 个答案:

答案 0 :(得分:1)

正如任何体面的PHP数据库教程所示,请在循环中调用mysql_fetch_assoc(),直到它返回false

答案 1 :(得分:0)

如果Web服务器上的处理不是MySQL服务器带宽的瓶颈,请使用

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

然后

$ids=explode(',',$resultfield) 
PHP中的

答案 2 :(得分:0)

假设你想得到友谊表。该表有列:member1和member2。要获取基于member1的member2值,

<?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 join语句。

<?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'];
}
?>