我试图使一个页面,显示数据库中的文章,但它是按类别组织的。
类别存储在表categories中,id和类别作为其字段/文章存储在表articles中,其中包含关于文章的各种信息的不同字段。
我拥有的代码如下:
<?php
$sql = "SELECT * FROM `categories`";
$query = mysql_query($sql) or die("Could not get CATEGORIES ".mysql_error());
while($category = mysql_fetch_array($query)){
$cat = $category['category'];
$sql = "SELECT * FROM `articles` WHERE `category` = '$cat'";
$query = mysql_query($sql) or die(mysql_error());
$articles = mysql_fetch_array($query);
$size = count($articles);
echo $size;
} ?>
我期望的结果是每个类别的列表,然后在每个类别下,具有该类别的文章数量。
如果能得到一些帮助,我们将不胜感激。
谢谢:D
发布于 2012-07-23 00:07:17
试试这个..。也许这就是你要找的。我们也可以使用单个mysql查询找到相同的结果。
$sql = "SELECT * FROM `categories`";
$query = mysql_query($sql) or die("Could not get CATEGORIES ".mysql_error());
$result = array();
while($category = mysql_fetch_array($query)){
$cat = $category['category'];
$sql = "SELECT count(*) as numberOfArticles FROM `articles` WHERE `category` = '$cat'";
$query2 = mysql_query($sql) or die(mysql_error());
$articles = mysql_fetch_array($query2);
$category['numberOfArticles'] = $articles['numberOfArticles'];
$result[] = $category;
}
print_r($result);发布于 2012-07-23 00:05:08
我认为你想要做的事情可以做得更容易、更有效率:
<?php
$sql = "SELECT categories.name, COUNT(articles.id) AS cnt
FROM categories
LEFT JOIN articles ON articles.category=categories.category";
$query = mysql_query($sql);
while ($category = mysql_fetch_assoc($query)) {
echo $category['name'].' - '.$category['cnt'];
}
?>(当然,我不知道您的表结构,我不得不猜测字段名,但这应该会让您对它的工作原理有所了解)。关于连接,你应该阅读MYSQL docs。
https://stackoverflow.com/questions/11601714
复制相似问题