获取信息的两个查询

时间:2011-02-23 21:39:43

标签: php mysql

我有两个数据表。一个包含所有用户可识别的信息(用户名,ID等),其余的是由他们生成的内容。我正在做一个评论页面。因此,当他们提交评论时,他们的user_id会收到评论。现在在评论页面上,我正在进行一个查询,它将显示所有注释,但我要做的是使用注释中的user_id从user_database中提取名称。我使用下面的查询没有成功。我该怎么调整呢?

代码:

   $query="SELECT * FROM comments where post_id = '$postid'";  
   $result=mysql_query($query);

   $num=mysql_numrows($result);

   mysql_close();

   echo "";

   $i=0;
   while ($i < $num) {

   $comment=mysql_result($result,$i,"comment");
   $user_id=mysql_result($result,$i,"user_id");
   $other=mysql_result($result,$i,"other");


    echo "<br>$comment, $user_id, $other";

    echo "";

    $i++;
    }

     if(mysql_num_rows($result) < 1) {
      echo "<div id=noresultfound>No results for $comment</div>";
       }

3 个答案:

答案 0 :(得分:2)

要从单个查询中的两个表中获取信息,您可以使用联接:

SELECT
    c.userid,
    c.comment,
    u.username,
    ...etc...
FROM comments AS c
JOIN user_database AS u
ON c.user_id = u.user_id
WHERE post_id = '42'

答案 1 :(得分:2)

要从同一查询中的两个表中提取数据,可以使用“SQL JOIN”。

例如:

select c.*, u.* from comments c join users u on u.id = c.user_id

此查询将从两个表中提取所有列,其中每个列都有一个共同的用户。

Read more here.

答案 2 :(得分:2)

我首先要将代码更改为以下内容

$query="SELECT * FROM comments where post_id = '$postid'";  
$result=mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
    echo "<br>".$row['comment'].", ".$row['user_id'].", ".$row['other'];
}

然后看看修改SQL以加入用户表

SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE post_id = '$postid'

然后你可以用

获得该人的姓名
$row['name'];