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

PHP PDO查询结果数组每个值重复出现两次的原因是什么?

问题原因

你使用的PDO数据库扩展中,fetch() 方法的默认获取模式是 PDO::FETCH_BOTH,会同时返回以字段名为键的关联数组、以数字为下标索引的索引数组,所以每个字段值都会对应两个键,出现重复存储的情况。

解决方法

你可以通过两种方案解决该问题:

  • 单次查询指定获取模式:调用fetch()时传入PDO::FETCH_ASSOC参数,指定仅返回关联数组,修改代码如下:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $data[] = $row;
}
  • 全局配置默认获取模式:在初始化数据库连接后,设置默认的返回格式为关联数组,后续所有查询无需重复传参:
// 数据库连接初始化后添加此行
$this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

修改后得到的数组就会仅保留字段名作为键,符合你的预期输出要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:54:03