mysql:display_name没有显示?

时间:2013-05-01 19:07:37

标签: php mysql

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

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

我已将ptb_reviews.from_user_id设为等于ptb_profiles.user_id 所以现在我想要回应display_nameuser_id的{​​{1}} ptb_profiles等于from_user_id中的ptb_reviews

然而,它不会显示display_name,唯一可行的方法是,如果我回显from_user_id,它会给我用户编号而不是名称。

我的ptb_reviews表格如下:

id  |  from_user_id  | to_user_id  | content |
1           2               5         hello
2           5               6         hi
3           -1              6         hello 

我的'ptb_profiles'表格如下所示:

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:

  <?php $reviews_set = get_reviews();
    if(mysql_num_rows($reviews_set) > 0) {
    while ($reviews = mysql_fetch_array($reviews_set)) { ?>

<?php echo "{$reviews['display_name']}"; ?>

有人可以告诉我我哪里出错了,因为我无法理解。

谢谢

1 个答案:

答案 0 :(得分:0)

首先,使用“隐式联接”(select * from table1, table2 where table1.aField = table2.aField);使用显式连接:select * from table1 inner join table2 on table1.aField = table2.aField

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

使用适当的过滤器为单个to_user_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项目中