0
<?php
    mysql_connect("localhost","root","");
    mysql_select_db('db2012');
    $uid = 8;
    $mid = 10;

    $q = mysql_query("select friend from users_friends where user = $uid") or die(mysql_error());
    if(mysql_num_rows($q) > 0)
    {

        while($r=mysql_fetch_array($q))
        {
            $qq = mysql_query("select friend from users_friends where user = $mid") or die(mysql_error());
            while($rr = mysql_fetch_array($qq))
            {
                if($r[friend]==$rr[friend])
                {
                    $friend_name_query = mysql_query("select name from users where uid = '$rr[friend]'") or die();
                    $friend_name = mysql_fetch_array($friend_name_query);
                    echo $friend_name[name];
                }
            }
        }   
    }


?>

このクエリは機能していますが、より少ないクエリを使用する他の方法はありますか? ima 初心者プログラマー いいところがあれば教えてください...

4

2 に答える 2

0

クエリは 1 つだけ使用する必要があります。

$query = 'SELECT u.name
    FROM users_friends f1 
      INNER JOIN users_friends f2 ON (f2.friend = f1.friend)
      INNER JOIN user u ON (u.uid = f2.friend)
    WHERE f1.user = "'. $uid. '"
      AND f2.user = "'. $mid .'"';

クエリを実行する

$q = mysql_query($query) or die(mysql_error());

whileループを実行します

while($r=mysql_fetch_array($q)){
  echo $r['name'];
}

を実行する場合にのみif(mysql_num_rows($q) > 0)ステートメントが必要ですelse。それ以外の場合は、while

于 2012-08-06T08:45:25.727 に答える
0

ユーザー 8 と 10 の共通の友達を取得するには、以下を試すことができます。

select * from
user_friends a inner join user_friends b on
a.friend=b.friend and (a.user='8' and b.user='10')

その後、ユーザー テーブルに参加して名前を取得できます。

于 2012-08-06T08:45:32.613 に答える