我有两个数据表。一个包含所有用户可识别的信息(用户名,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>";
}
答案 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
此查询将从两个表中提取所有列,其中每个列都有一个共同的用户。
答案 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'];