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

论坛开发中SQL查询无法正确筛选对应分类下主题的问题求助

问题核心原因

  • 未获取分类页URL传递的分类ID参数,无法确定要筛选的分类范围
  • 现有SQL语句SELECT * FROM topics WHERE categorie ORDER BY id DESC LIMIT 0,5的WHERE条件未指定匹配值,实际没有执行分类筛选逻辑

修复方案

1. 修改主题查询逻辑(showAllTopicsAction.php)

替换原有代码为以下内容,同时兼容首页全量查询、分类页按ID筛选两种场景,且使用预处理查询避免SQL注入风险:

<?php
require('actions/database.php');

// 判断是否为分类页的带ID请求
if(isset($_GET['id']) && is_numeric($_GET['id']) && basename($_SERVER['PHP_SELF']) == 'category.php'){
    $categoryId = $_GET['id'];
    $getAllTopics = $bdd->prepare('SELECT * FROM topics WHERE categorie = ? ORDER BY id DESC LIMIT 0,5');
    $getAllTopics->execute([$categoryId]);
}else{
    // 首页默认查询全量主题
    $getAllTopics = $bdd->query('SELECT * FROM topics ORDER BY id DESC LIMIT 0,5');
}

2. 空状态优化(可选)

在分类页循环输出主题的代码前增加数据存在性判断,避免分类下无主题时页面空白:

<?php if($getAllTopics->rowCount() > 0){ ?>
    <!-- 此处保留原有循环输出主题的代码 -->
<?php }else{ ?>
    <div class="card-body py-3 text-center text-muted">该分类下暂无主题</div>
<?php } ?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:39:01