Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个选择共同朋友的查询正确吗?_Php_Mysql - Fatal编程技术网

Php 这个选择共同朋友的查询正确吗?

Php 这个选择共同朋友的查询正确吗?,php,mysql,Php,Mysql,您应该只使用一个查询: <?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) &g

您应该只使用一个查询:

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


?>
运行查询

$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 .'"';
然后做while循环

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

如果执行
else
,则只需要
if(mysql_num_rows($q)>0)
语句,否则您可以在
时使用
您可以在下面尝试,以获得用户8和10的共同朋友

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

然后,您可以加入用户表以获取名称。

第3行您有一个单引号和一个双引号,这只是一个快速观察。如果您在循环中运行DB查询,很可能是错误的方法。你应该了解。我修复了@Simon提到的报价问题,因为我猜这是一个复制/粘贴错误,否则你会抱怨解析错误。@Simon-我想这只是问题中的一个输入错误,OP说他的代码正在运行,但正在询问是否有更有效的方法来实现相同的结果。@gulzar我的解决方案对您有帮助吗?是的,它确实有效,但我必须在这方面做一些更改。@gulzar好的,您能投票支持答案并将答案设置为可接受的答案吗?以下是一些示例和示例
select * from
user_friends a inner join user_friends b on
a.friend=b.friend and (a.user='8' and b.user='10')