Php mysql:显示\u名称不显示?

Php mysql:显示\u名称不显示?,php,mysql,Php,Mysql,我需要帮助,因为我看不出这不起作用的原因 我有一个mysql查询,它选择ptb_reviews和ptb_profiles表中的所有项目 我已将ptb\u评论。from\u user\u id设置为等于ptb\u profiles。user\u id 因此,现在我想呼出ptb\u配置文件中user\u id的display\u name,它与ptb\u reviews中的from\u user\u id相同 但是,它不会显示display\u name,唯一有效的方法是,如果我从\u user\u

我需要帮助,因为我看不出这不起作用的原因

我有一个mysql查询,它选择
ptb_reviews
ptb_profiles
表中的所有项目

我已将
ptb\u评论。from\u user\u id
设置为等于
ptb\u profiles。user\u id
因此,现在我想呼出
ptb\u配置文件中
user\u id
display\u name
,它与
ptb\u reviews
中的
from\u user\u id
相同

但是,它不会显示
display\u name
,唯一有效的方法是,如果我从\u user\u id
中回显
,它会给出用户编号而不是名称

我的
ptb_reviews
表如下所示:

id  |  from_user_id  | to_user_id  | content |
1           2               5         hello
2           5               6         hi
3           -1              6         hello 
id  |  user_id  |  display_name  |
1         2            jack
2         5            lisa
我的“ptb_配置文件”表如下所示:

id  |  from_user_id  | to_user_id  | content |
1           2               5         hello
2           5               6         hi
3           -1              6         hello 
id  |  user_id  |  display_name  |
1         2            jack
2         5            lisa
下面是我的mysql查询:

function get_reviews() {
            global $connection;
            global $profile_id;
            $query = "SELECT *
                        FROM ptb_reviews, ptb_profiles
                        WHERE ptb_reviews.to_user_id = \"$profile_id\"
                        AND ptb_reviews.deleted ='0'
                        AND ptb_reviews.approved = '1'
                        AND ptb_reviews.from_user_id = '-1'
                        OR ptb_reviews.from_user_id = ptb_profiles.user_id
                        GROUP BY ptb_reviews.content
                        ORDER BY ptb_reviews.date_added DESC
                        LIMIT 5";
            $reviews_set = mysql_query($query, $connection);
            confirm_query($query, $connection);
            return $reviews_set;
        }
php:


首先,不要使用“隐式联接”(
select*fromtable1,table2,其中table1.aField=table2.aField
);使用显式联接:
从表1中选择*表1上的内部联接表2.aField=table2.aField

我建议一些简单的步骤来确保你得到你想要的。在PHP项目中实现之前,请尝试MySQL控制台(或工作台或其他界面)中的所有操作

使用适当的过滤器将表中单个
的所有行返回给\u user\u id
,应该很容易

select 
    *
from
    ptb_reviews as r
    inner join ptb_profiles as p on r.from_user_id = p.userId
where
    r.deleted = '0'
    r.approved = '1'
order by
    r.date_added desc
limit 5

如果有效,则开始添加所需的
where
条件。一个接一个地尝试,当你得到你需要的东西时,把它放在你的PHP项目中

你应该停止使用mysql扩展,选择mysqli或pdo。mysql将在不久的将来被弃用。
mysql.*
现在已被弃用。@MikeBrant那么除了“display\u name”之外,我如何获得其他每一列的结果?@HarryMan您正在按内容分组,允许mysql选择它想要的显示名称、用户id等。您还可以让mysql确定与ptb_概要文件建立关系的字段。您的OR子句中也有一个问题。@Kevin您是正确的,因为它被定义为5.5.0。我只是做了区分,因为有一段时间PHP.net文档中指出这些函数将在将来被弃用,而现在它们明确表示这些函数的弃用已经完成。如果你查看他的表,他实际上有一个用户id,等于-1。不知道为什么。。