Php 查询朋友表中两个朋友的姓名的简单方法

Php 查询朋友表中两个朋友的姓名的简单方法,php,mysql,foreign-keys,foreign-key-relationship,Php,Mysql,Foreign Keys,Foreign Key Relationship,我有一个朋友表,其中存储了两个朋友的ID。当我查询时,比如说我的朋友,有没有一种简单的方法可以从users表中获取我朋友的名字?我使用PHP和MySQL,表不通过外键连接,但我想我可以使用Navicat连接它们 我的问题是: session_start(); if(isset($_SESSION['valid_user'])) { $currentuser= $_SESSION['valid_user']; } $friendships= mysql_quer

我有一个朋友表,其中存储了两个朋友的ID。当我查询时,比如说我的朋友,有没有一种简单的方法可以从users表中获取我朋友的名字?我使用PHP和MySQL,表不通过外键连接,但我想我可以使用Navicat连接它们

我的问题是:

session_start();
if(isset($_SESSION['valid_user']))
    {
        $currentuser= $_SESSION['valid_user'];
    }


$friendships= mysql_query("SELECT * FROM friends WHERE Person1 = '$currentuser' OR Person2 = '$currentuser' ");
while($row = mysql_fetch_assoc($friendsips))
    {
        if ($row['Person1'] == $currentuser) echo $row['Person2']; // quering the users name from here is hard and long thing to do
        if ($row['Person2'] == $currentuser) echo $row['Person1'];
    }
friendsfriendshipID,Person1,Person2


usersID、name、姓氏

假设表结构为:

用户: 用户名

朋友们: 友谊号,用户号1,用户号2

SELECT name 
FROM Friends F JOIN Users U ON (F.userid_2 = U.userid) 
WHERE userid_1 = X
编辑: 如果你想得到两个名字,你可以用这个

SELECT 
  U1.name as name1 , U2.name as name2
FROM 
 Friends F 
 JOIN Users U1 ON (F.userid_1 = U1.userid) 
 JOIN Users U2 ON (F.userid_2 = U2.userid) 
WHERE 
 userid_1 = X

您可以调整where子句来查询任意一个用户ID。

只需更改查询并调整join和where子句。好的,我已将其更改为F.userid_2=U.userid和F.userid_1=U.userid,但随后它会显示警告:mysql_fetch_assoc期望参数1是资源,C:\Program Files\EasyHP中给出的布尔值,无输出您应该粘贴查询和查询错误,在phpmyadmin或其他程序中运行查询并查看结果。php错误没有帮助。我更新了答案,现在您可以使用$row['name1']或$row['name2']获取两个用户的姓名