Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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 Can';无法显示好友列表_Php_Mysql_Select - Fatal编程技术网

Php Can';无法显示好友列表

Php Can';无法显示好友列表,php,mysql,select,Php,Mysql,Select,我试图让用户的好友列表显示在他们的个人资料页面上,但我能显示的只是用户个人资料的名称,而不是他们的任何朋友或个人资料图片 我的桌子也一样 USERS user_id username profile FRIENDS user_id friend_id accepted (ENUM 0 for no, 1 for accepted). 这是我正在使用的代码,我还没有开始将我的站点转换为MYSQLI,所以是的,我知道该代码目前易受攻击 <?php $user_id = $_SESSION[

我试图让用户的好友列表显示在他们的个人资料页面上,但我能显示的只是用户个人资料的名称,而不是他们的任何朋友或个人资料图片

我的桌子也一样

USERS
user_id
username
profile

FRIENDS
user_id
friend_id
accepted (ENUM 0 for no, 1 for accepted).
这是我正在使用的代码,我还没有开始将我的站点转换为MYSQLI,所以是的,我知道该代码目前易受攻击

<?php
$user_id = $_SESSION['user_id'];

$sql = "SELECT friends.id, friends.user_id, friends.friend_id, friends.accepted, users.user_id, users.username, users.profile
                FROM `friends`
                LEFT JOIN `users` on users.user_id = friends.user_id OR users.user_id = friends.friend_id
                WHERE friends.friend_id = $user_id OR friends.user_id = $user_id
                AND users.user_id != $user_id AND friends.accepted = '1' OR friends.friend_id = $user_id AND friends.accepted = '1'";

$result = mysql_query($sql);
?>
<img src="<? echo $profile; ?>"><? echo $username; ?>
尝试使用此查询

SELECT friend_id as id FROM `friends` where user_id=$user_id and accepted=1 union select user_id as id from friends where friend_id=$user_id and accepted=1

上面的查询将返回好友id,请尝试用

$result = mysql_query($sql) or die(mysql_error());
看看你是否有什么错误


如果您在语法上遇到任何错误,请更正它。

假设fiends表中的user_id和friend_id是users表中user_id的外键,那么关系将是“一个用户可以有一个或多个朋友”。以下查询将为您提供特定用户的好友id

SELECT friend_id from friends f
JOIN users u ON f.user_id = u.user_id
WHERE u.user_id = $user_id AND f.accepted = 1
$result=mysql\u query($sql)或die(mysql\u error())

试试看,然后给我们输出

请试试这个

<?php
$friends_result = mysql_query("
    SELECT
        users.`username` AS username
    FROM
        friends
    LEFT JOIN
        users
    ON
        users.`user_id` = friends.`user_id`
    OR
        users.`user_id` = friends.`friend_id`
    AND
        users.`user_id` != '" . $user_id . "'
    WHERE
        friends.`user_id` = '" . $user_id . "'
    OR
        friends.`friend_id` = '" . $user_id . "'");


while($friends_array = mysql_fetch_array($friends_result))
{
    echo $friends_array['username'] . "<br />";
}
?>
尝试下面的查询

SELECT users.id as userid, firstname, lastname, username,profile_id,friends.accepted FROM users RIGHT JOIN (SELECT friend_id as id,accepted FROM `friends` where user_id=$user_id and accepted=1  union select user_id as id,status from friends where friend_id=$user_id and accepted=1) friends  ON users.id = friends.id;

$profile返回的是什么?是否尝试转储$profile?profile是在users表中保存配置文件图片的字段。但它只是返回“您试图存储在配置文件字段中的内容,文件名或urlprofile是图像url,它在代码中“>数据库中的字段看起来类似于“/images/profiles/4353453.jpg”。谢谢我尝试了这一点,但在Admin的配置文件中,它仍然只显示没有图片的“Admin”和“Friend”在二级配置文件friend上。我得到了“no column status”,意识到它需要被“接受”,现在没有错误消息。正确,只是得到了名称部分,这很奇怪,因为用户名和配置文件都存储在users中,但仅显示users表中的一个字段。输出为“admin”没有错误,没有配置文件图像,只有我测试的个人资料的用户名,如果我尝试使用名为“friend”的帐户,它会显示“friend”,没有图像。@user2629980如果你想评论,请查看评论,如果评论已经发表,请将其更新投票,而不是复制粘贴谢谢,这很有效!它显示了用户名,我会自己弄清楚个人资料。