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

PHP如何将指定SQL表的查询结果转为仅含名称与值的JSON对象

如何用PHP将config表查询结果转为仅含名称与值的JSON对象?

先确认下我们的基础场景:
我们有一个config表,结构是这样的:

CREATE TABLE config (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50),
    valor VARCHAR(50)
);

表里现有的数据如下:

IDnombrevalor
1name1value1
2name2value2
3name3value3

要把查询结果转成只包含nombre(名称)和valor(值)的JSON对象,其实很简单,分几步就能搞定,我给你两种常用的实现方式:

方法一:使用MySQLi扩展

这是PHP里比较常用的数据库操作扩展,代码步骤清晰:

1. 连接数据库

首先先建立和数据库的连接,替换成你自己的数据库参数:

$servername = "localhost";
$username = "你的数据库用户名";
$password = "你的数据库密码";
$dbname = "你的数据库名";

// 创建连接实例
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}

2. 查询并整理数据

我们只需要查询nombre和valor两个字段,然后把它们整理成键值对的关联数组:

// 编写查询SQL,只获取需要的字段
$sql = "SELECT nombre, valor FROM config";
$result = $conn->query($sql);

// 初始化空数组用来存储结果
$configData = [];

// 如果有查询结果,遍历每一行并整理成键值对
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        // 把nombre作为数组的键,valor作为对应的值
        $configData[$row["nombre"]] = $row["valor"];
    }
}

// 记得关闭数据库连接
$conn->close();

3. 转换为JSON对象

用json_encode把关联数组转成JSON格式:

$jsonOutput = json_encode($configData);

// 输出或者按需使用这个JSON
echo $jsonOutput;

执行后你会得到这样的JSON结果:

{"name1":"value1","name2":"value2","name3":"value3"}

方法二:使用PDO扩展

如果你习惯用PDO(更通用的数据库操作扩展,支持多种数据库),代码如下:

try {
    $servername = "localhost";
    $username = "你的数据库用户名";
    $password = "你的数据库密码";
    $dbname = "你的数据库名";

    // 建立PDO连接
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 准备并执行查询
    $stmt = $conn->prepare("SELECT nombre, valor FROM config");
    $stmt->execute();

    $configData = [];
    // 遍历结果并整理成键值对
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $configData[$row["nombre"]] = $row["valor"];
    }

    // 转成JSON并输出
    $jsonOutput = json_encode($configData);
    echo $jsonOutput;
} catch(PDOException $e) {
    echo "查询出错: " . $e->getMessage();
}
// 关闭PDO连接
$conn = null;

一些注意事项

  • 确保你的config表中nombre字段的值是唯一的,否则后面的记录会覆盖前面的(如果需要的话,可以给表加唯一约束:ALTER TABLE config ADD UNIQUE(nombre);)
  • 如果你的值里包含中文或者特殊字符,转JSON的时候可以加上JSON_UNESCAPED_UNICODE参数,避免字符被转义:json_encode($configData, JSON_UNESCAPED_UNICODE);
  • 记得在操作完成后关闭数据库连接,避免资源浪费

内容的提问来源于stack exchange,提问作者Pedro Jose Otero Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:43:41