2011-12-18 2 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のID)友人のIDの全てを取得することができるようにしたい。しかし、私はPHPでmysql_fetch_assocを使用する場合。私はmember2 idsのうちの1つだけを取得します。メンバー1が友人リストに2,3および5のIDを持っていても、彼の友人のidsの1つ。私は彼のすべての友人のIDを得ることができるようにこれを修正する方法はありますか? ありがとう

+0

だから、どの出力を得ますか?私はあなたが何を意味するのかよくわかりません。しかし、PHPでmysql_fetch_assocを使用すると、member2 idsのうちの1つしか得られません。一度に1つ、または合計で1つだけ取得しますか? – Frank

答えて

0

レッツで使用

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

、その後

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

あなたは友情を取得したいと言います表。テーブルにはcolumn:member1とmember2があります。メンバー1に基づいて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']; 
} 
?> 
+0

私はそれを使用していますが、私はまだすべての友人IDではなく、ただ1つの友だちIDを取得します。 – randomphp

+0

あなたのSQLクエリは何ですか?そのループの間、私は使用します: "SELECT member1、member2 FROM friendship_table WHERE member1 = 1"、フェッチ値のwhileループを使用します。 –

+0

私は同じクエリを使用しています – randomphp

1

適切なPHPデータベースのチュートリアルが表示されるので、falseを返すまで、mysql_fetch_assoc()をループで呼び出してください。

+0

私はwhile($ row = mysql_fetch_assoc($ query)){...}を使用していますが、まだ1つの友だちIDしか取得していません。何か案は? – randomphp

+0

あなたは一度に1つだけを得るでしょう。一度に複数を処理する必要がある場合は、それらを保管してから処理する必要があります。 –

+0

私は理解しているか分からない、私は初心者のようなものだ。あなたは何を意味するか教えてくれますか?ありがとう – randomphp

0

ウェブサーバ上の処理は、MySQLサーバへの帯域幅よりもボトルネックの小さい場合、PHP

関連する問題