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

PHP中SQL GROUP BY无法显示动物列名称的问题求助

问题:PHP搜索筛选功能中复选框选项缺失动物名称

我正在尝试用PHP开发搜索筛选功能,需要从数据库提取分类作为复选框选项。期望输出格式为「动物编码 动物名称 - 数量」(如100 Cats - 2),但执行以下代码后,仅显示编码和数量,缺失动物名称。

我的代码

$query = "SELECT animalcode, COUNT(*) as num_items FROM dbposts GROUP BY animal";

$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{ 
  echo $row['animalcode']; 
  echo $row['animal'];
  echo " - ";
  echo $row['num_items'];
  echo "<br>";
}

当前输出

100 - 2
102 - 2
103 - 1
104 - 3
105 - 1
108 - 1

数据库结构

CREATE TABLE IF NOT EXISTS `dbposts` (
  `id` int(6) unsigned NOT NULL,
  `animalcode` varchar(200) NOT NULL,
  `animals` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `dbposts` (`id`, `animalcode`, `animals`) VALUES
  ('1', '100', 'Cats'),
  ('2', '101', 'Dogs'),
  ('3', '100', 'Cats'),
  ('4', '103', 'Tiger'),
  ('5', '104', 'Fox'),
  ('6', '105', 'Lion'),
  ('7', '101', 'Dogs'),
  ('8', '104', 'Fox'),
  ('9', '108', 'Snake'),
  ('10', '104', 'Fox');

解决方案

问题出在两个核心错误,修改后即可得到期望结果:

1. 修正SQL查询语句

原查询没有选择animals字段,且GROUP BY的字段名错误(数据库中是animals而非animal),同时规范写法需要将所有非聚合字段加入GROUP BY:

$query = "SELECT animalcode, animals, COUNT(*) as num_items FROM dbposts GROUP BY animalcode, animals";

2. 修正PHP输出逻辑

原代码中错误使用了不存在的$row['animal']字段,应改为数据库中实际的animals字段,同时添加空格让格式更符合预期:

foreach($result as $row)
{ 
  echo $row['animalcode']; 
  echo " " . $row['animals'];
  echo " - ";
  echo $row['num_items'];
  echo "<br>";
}

修改后运行,即可得到如下正确输出:

100 Cats - 2
101 Dogs - 2
103 Tiger - 1
104 Fox - 3
105 Lion - 1
108 Snake - 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:48:15