【问题标题】:What is the best way to get Category-info and Article-info at same time from mysql/php?从 mysql/php 同时获取类别信息和文章信息的最佳方法是什么?
【发布时间】:2013-05-02 01:48:00
【问题描述】:

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

类别 [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='                 
                    }
                }

}

【问题讨论】:

  • 您的样本中目前只有一个查询。那么,您要结合哪两个查询?您是否阅读过任何 MySQL/SQL 文档?你知道如何使用 JOIN 吗?
  • 显然我没有。我会读下去的,tnx!
  • 你也可能不想养成使用SELECT *的习惯。根据我的经验,您实际上需要查询中的所有数据列的情况很少。虽然使用SELECT * 似乎是一种编写代码的简单方法,但实际上它会使您的应用程序可能处理比它需要的更多的数据,降低处理结果集的性能,并在此过程中消耗更多的内存.

标签: php mysql


【解决方案1】:

使用连接:

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

【讨论】:

  • @MichaelScott 我建议你学习 SQL,查看在线教程。 Join 的使用是大多数数据库任务的基础
【解决方案2】:

您的查询应该是这样的:

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

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2015-10-24
    • 2010-09-07
    相关资源
    最近更新 更多