从mysql / php同时获取Category-info和Article-info的最佳方法是什么?

时间:2013-05-07 23:40:00

标签: php mysql

由于学业,我正在建立一个简单的报纸网站。我的数据库中有两个表。

分类 [CategoryID,CategoryName,ParentID(指向cat.id)]

文章 [ArticleID,Heading,Teasertext,Content,Date,Category(CategoryID的外键)]

在第一页上我提取了最新的文章,并在每篇文章下面都有一篇文章的链接(基于index.php?name = CategoryName& parent = ParentID)。

我需要从Articles-table中的Category-info中提取有关CategoryName和ParentID的相关信息。

我坚持如何将两个查询合并为一个。我想知道你是否对如何解决它有任何想法?

这就是我得到的。

function display_articles($link)
{

    $result = mysqli_query($link, "SELECT * FROM Article ORDER BY Date DESC");

                if (!$result)
                {
                    $error = 'Error fetching Articles: ' . mysqli_error($link);
                    exit();
                }


                while ($row = mysqli_fetch_array($result))
                {
                    $Heading[] = $row['Heading'];
                    $Teasertext[] = $row['Teasertext'];
                    $Date[] = $row['Date'];
                }


                if (isset($Heading))
                {
                    for ($i=0; $i<count($Heading); $i++)
                    {

                        echo '<div class="frontpage"><h2>' .htmlspecialchars($Heading[$i], ENT_QUOTES, "UTF-8"). '</h2>'; 
                        echo htmlspecialchars($Date[$i], ENT_QUOTES, "UTF-8");
                        echo '<p class="Teasertext"> ' .htmlspecialchars($Teasertext[$i], ENT_QUOTES, "UTF-8"). '</p></div>';
                        echo '<a href="index.php?name='                 
                    }
                }

}

2 个答案:

答案 0 :(得分:0)

使用联接:

SELECT 
    a.*, c.CategoryName, c.ParentID 
FROM 
    Article AS a 
    INNER JOIN Category AS c on a.category = c.categoryId
ORDER BY a.Date DESC

答案 1 :(得分:0)

您的查询应该是这样的:

SELECT 
         a.*,c.* 
FROM 
         Article a LEFT JOIN 
         Categories c on (a.category=c.categoryid) 
ORDER BY 
         a.Date DESC