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
相关产品推荐
相关产品推荐

