讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 PHP 中正确处理并转换数据库查询的多条记录数组

千强大大_8416

千强大大_8416

发布时间:2025-12-31 13:38:02

|

288人浏览过

|

来源于php中文网

原创

如何在 PHP 中正确处理并转换数据库查询的多条记录数组

本文讲解如何将 pdo 查询返回的多维数组逐条处理(如坐标转地址),避免因变量覆盖导致仅返回单条数据的问题,并生成结构清晰、可直接用于前端展示的新数组。

在使用 PDO::FETCH_NAMED 获取数据库结果时,fetchAll() 返回的是一个包含多条记录的数组(即 array[0], array[1], ...)。你原始代码中定义了 $result = [...] 并在循环内反复赋值(如 $result['nameA'] = ...),这会导致每次迭代都覆盖同一变量,最终只保留最后一次循环的结果——因此 JSON 输出只剩一条记录。

✅ 正确做法是:为每条记录创建独立子数组,并将其追加到 $result 中(即 $result[] = [...]),使 $result 成为一个二维索引数组,与原始 fetchAll() 的结构一致。

以下是推荐的完整实现:

Google calender
Google calender

使用 Maton API 密钥认证,创建、更新、列出和删除 Google Calendar 事件,支持参与者、时区及 Google Meet。

下载
$matches = $stmt->fetchAll(PDO::FETCH_NAMED);
$result = []; // 显式初始化为空数组,提高可读性与健壮性

foreach ($matches as $match) {
    // 安全提取 name 数组(防键缺失或长度不足)
    $names = $match['name'] ?? [];
    $nameA = $names[0] ?? '';
    $nameB = $names[1] ?? '';
    $nameC = $names[2] ?? '';

    // 调用反向地理编码(建议增加异常处理与缓存逻辑)
    $location = $this->reverse_geocode(
        trim($match['coordinate x'] ?? '0'),
        trim($match['coordinate y'] ?? '0')
    ) ?: 'Unknown location';

    $result[] = [
        'nameA'      => trim($nameA),
        'nameB'      => trim($nameB),
        'nameC'      => trim($nameC),
        'date'       => $match['date'] ?? null,
        'round'      => $match['round'] ?? null,
        'leauge_id'  => $match['leauge_id'] ?? null,
        'location'   => $location,
    ];
}

return $result; // 返回形如 [ {...}, {...}, ... ] 的标准 JSON 数组

? 关键注意事项:

立即学习“PHP免费学习笔记(深入)”;

  • ✅ 使用 $result[] = [...] 实现追加而非覆盖,确保返回多条记录;
  • ✅ 对 name 数组和坐标字段做空值/越界防护(?? 和 [] ??),避免 Notice: Undefined index;
  • ✅ trim() 去除名称前后的空格(如 " name1" → "name1"),提升数据质量;
  • ⚠️ reverse_geocode() 是外部调用,建议:
    • 添加超时与重试机制;
    • 对相同坐标做内存或 Redis 缓存,避免重复请求 Google API;
    • 捕获异常并提供降级值(如 'Unknown location'),防止单条失败中断整个响应;
  • ? 最终返回的 $result 可直接 json_encode() 发送给前端,结构与你期望的 JSON 数组完全一致,前端可用 fetch().then(data => data.forEach(...)) 安全遍历。

通过以上重构,你将获得一个结构统一、健壮可靠、易于前端消费的多记录数据集。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2015

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2922

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

996

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3299

2025.09.10

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

718

2025.12.04

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

4414

2023.10.23

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

11525

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

5487

2024.08.14

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn