通过ID从其他表中获取作者姓名和类别名称

时间:2010-05-28 13:59:03

标签: php mysql

我有三个mysql表,第一个包含有关文章的信息(文章ID,作者ID,标题和内容),第二个表包含有关我网站上注册用户的信息(ID,名称,密码,电子邮件),第三个表包含有关类别(ID,名称)。

我需要获取所有文章并显示标题,作者姓名和类别名称,但文章表仅包含有关作者和类别ID的信息,而不是名称。

我知道如何从文章表中获取所有文章,但我应该如何同时从另一个表中获取作者姓名和类别名称以显示文章标题?

希望我很清楚。

这是我用来显示文章标题的代码:

$q = mysql_query("SELECT * FROM articles ORDER BY ID DESC");

if(!$q) die(mysql_error());

while($article = mysql_fetch_object($q)) {

echo '<div class="article">';
echo $article->title . '</a>';
echo '<p class="details">Author:' . $article->author_ID . '.</p>';
echo '</div>';
}  

正如您猜测$ article-&gt; ID变量显示作者ID但我希望显示名称,而是保存在authors表中。类别相同......

有人可以帮忙吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您必须将其他表连接在一起才能获取该信息。有关SQL Joins的更多信息,请参阅此处。如果您之前没有使用过连接,请查看有关如何在表之间进行简单和复杂连接的更多示例。加入表格后,您所要求的所有数据都将可用。

答案 1 :(得分:1)

@Tommy是对的,你必须使用JOINS,这里有一些东西可以让你前进 假设您的三个表名为“文章”,“用户”和“类别”:

SELECT articles.title, users.name, categories.name FROM articles  
JOIN users ON users.id=articles.author_id  
JOIN categories ON categories.id=articles.category_id   
ORDER BY ID DESC

现在我只是猜你的牌桌和场名 在第一行,我调用了必填字段,如tablename.field
然后,我将用户表加入文章表,其中用户表中用户的 id 应该等于文章表中的 author_id 然后我加入类别表,指定类别表中的 id 类别等于 category_id 文章表格中 在此之后,您可以使用WHERE子句来进一步缩小选择范围,或直接进入ORDER BY,因为您希望全部抓住它们。