首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP构建博客归档导航菜单的MYSQL查询帮助

使用PHP构建博客归档导航菜单的MYSQL查询帮助
EN

Stack Overflow用户
提问于 2010-01-13 21:55:52
回答 3查看 1K关注 0票数 1

我正在构建一个博客档案导航菜单。目前,我运行一个查询来获取所有的年份和月份。然后循环遍历并运行以下查询,以获取该年/月博客文章的所有id和标题:

代码语言:javascript
复制
SELECT `id`, `title` 
FROM `news` 
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03" 
ORDER BY `date` DESC

在此之后,为了计算那个月的帖子数量,我运行了一个非常类似的查询:

代码语言:javascript
复制
SELECT COUNT(*) as `count` 
FROM `news` 
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03"

当然,年份和月份是动态的。

有办法避免运行两个不同的查询吗?

提前谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-13 21:59:24

发送第一个查询(http://php.net/manual/en/function.mysql-num-rows.php)后,可以通过php对行进行计数。

票数 0
EN

Stack Overflow用户

发布于 2010-01-13 22:06:31

怎么回事:

代码语言:javascript
复制
SELECT `id`, `title`, count(*) AS `count` 
FROM `news` 
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03" 
GROUP BY ( `id` ) #assuming id is unique
ORDER BY `date` DESC

编辑:忘记添加GROUP BY子句

编辑2:忘记了上面的内容。这显然是不对的。这将发挥作用,尽管它可能不是很优雅:

代码语言:javascript
复制
SELECT
    `id`,
    `title`,
    ( SELECT
          count(*)
      FROM
          `news`
      WHERE
          YEAR(`date`) = "2010" AND 
          MONTH(`date`) = "01" ) as `count`
FROM
    `news` 
WHERE
    YEAR(`date`) = "2010" AND
    MONTH(`date`) = "01"
ORDER BY
    `date` DESC

因此,建议的mysql_num_rows()毕竟不是那么糟糕。:)

票数 1
EN

Stack Overflow用户

发布于 2010-01-13 22:01:34

您可以使用php count()来完成它;如果您的db实现了这个方法:

代码语言:javascript
复制
echo count($this->db->fetch_array($q));

很容易知道有多少物品

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2060569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档