You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP+MySQL实现博客侧边栏归档:展示月份及对应文章数

实现PHP+MySQL文章计数与博客侧边栏归档功能

嘿,我来帮你搞定这个需求!先指出你现有代码里的一个小问题:用单引号包裹SQL语句时,里面的$y和$m变量不会被PHP解析,而且直接拼接变量存在SQL注入风险,咱们换成更安全的写法来实现。下面分两部分补全代码:

一、输出当月文章计数

$y = date("Y");
$m = date("m");
$conn = new mysqli("localhost","root","","yomadsdata");

// 使用预处理语句避免SQL注入,同时确保变量正确解析
$sql = 'SELECT count(*) AS post_count FROM blogposts WHERE YEAR(post_created) = ? AND MONTH(post_created) = ?';
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $y, $m);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

// 输出当月文章数量,你可以根据页面布局调整输出方式
echo "<p>当月文章数:{$row['post_count']}</p>";

二、实现侧边栏归档功能

要实现按月份归档并显示对应文章数量,我们需要查询所有存在文章的年月,分组统计数量,再把数字月份转换为英文月份名称:

// 查询归档数据:按年月分组,统计每个月的文章总数,并按时间倒序排列
$archiveSql = 'SELECT YEAR(post_created) AS post_year, MONTH(post_created) AS post_month, count(*) AS post_count 
               FROM blogposts 
               GROUP BY post_year, post_month 
               ORDER BY post_year DESC, post_month DESC';
$archiveResult = $conn->query($archiveSql);

// 渲染侧边栏归档模块,你可以根据自己的CSS样式调整HTML结构
echo '<div class="sidebar-archive">';
echo '<h3>文章归档</h3>';
echo '<ul>';

while ($archiveRow = $archiveResult->fetch_assoc()) {
    // 将数字月份转换为英文月份名称(比如3转为March)
    $monthName = date("F", mktime(0, 0, 0, $archiveRow['post_month'], 1));
    // 按照要求的格式输出:March(17)
    echo "<li>{$monthName}({$archiveRow['post_count']})</li>";
}

echo '</ul>';
echo '</div>';

// 记得关闭数据库连接
$conn->close();

一些实用提示

  • 如果你的post_created字段是字符串格式(比如类似2024_05_12的格式),那需要调整SQL语句,比如用LEFT(post_created, 7) = ?,然后绑定参数为$y . '_' . $m,适配你的日期存储格式。
  • 要是想让归档项可点击跳转至对应月份的文章列表,可以给<li>里的内容添加链接:
    echo "<li><a href='archive.php?year={$archiveRow['post_year']}&month={$archiveRow['post_month']}'>{$monthName}({$archiveRow['post_count']})</a></li>";
    
  • 建议给数据库操作添加错误处理,比如检查$conn->connect_error或者$stmt->error,方便排查问题。

内容的提问来源于stack exchange,提问作者Goldensquare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:17:40