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

如何在PHP中获取SQL数据库表名、字段及数据并生成JSON编码

PHP获取SQL表信息并转为JSON的解决方案

嗨,我来帮你搞定这两个需求!不过先敲个重点:你提供的mysql_*系列函数早就被PHP废弃了(PHP 5.5起标记为废弃,PHP 7直接移除),所以下面我用mysqli扩展来写示例——这是目前官方推荐的安全用法哦。

一、获取所有表名及对应表内数据,转为JSON编码

我们可以先获取数据库里的所有表名,再逐个查询每个表的全部数据,最后把表名和对应数据整理成数组,再转成JSON。

示例代码:

// 数据库连接参数
$host = 'localhost';
$username = '你的用户名';
$password = '你的密码';
$dbname = '你的数据库名';

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

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

// 存储最终结果的数组
$resultData = [];

// 获取所有表名
$tablesResult = $conn->query("SHOW TABLES");
if ($tablesResult) {
    // 遍历每个表
    while ($row = $tablesResult->fetch_row()) {
        $tableName = $row[0];
        // 查询当前表的所有数据
        $tableDataResult = $conn->query("SELECT * FROM `$tableName`");
        if ($tableDataResult) {
            // 将表数据转为关联数组
            $tableData = [];
            while ($dataRow = $tableDataResult->fetch_assoc()) {
                $tableData[] = $dataRow;
            }
            // 把表名和对应数据存入结果数组
            $resultData[$tableName] = $tableData;
            // 释放结果集
            $tableDataResult->free();
        }
    }
    $tablesResult->free();
}

// 关闭连接
$conn->close();

// 转为JSON(JSON_PRETTY_PRINT让输出更易读,可选)
$jsonOutput = json_encode($resultData, JSON_PRETTY_PRINT);
echo $jsonOutput;

二、列出所有表名及每张表的字段信息,转为JSON编码

这个需求需要先获取表名,再对每个表查询字段详情(比如字段名、类型、是否为主键等),最后整理成JSON。

示例代码:

// 数据库连接参数(同上)
$host = 'localhost';
$username = '你的用户名';
$password = '你的密码';
$dbname = '你的数据库名';

$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

$tableSchema = [];

// 获取所有表名
$tablesResult = $conn->query("SHOW TABLES");
if ($tablesResult) {
    while ($row = $tablesResult->fetch_row()) {
        $tableName = $row[0];
        // 查询当前表的字段信息(用DESCRIBE或SHOW COLUMNS FROM都可以)
        $columnsResult = $conn->query("DESCRIBE `$tableName`");
        if ($columnsResult) {
            $columns = [];
            while ($colRow = $columnsResult->fetch_assoc()) {
                $columns[] = [
                    '字段名' => $colRow['Field'],
                    '类型' => $colRow['Type'],
                    '是否允许为空' => $colRow['Null'],
                    '主键' => $colRow['Key'],
                    '默认值' => $colRow['Default'],
                    '额外属性' => $colRow['Extra']
                ];
            }
            $tableSchema[$tableName] = $columns;
            $columnsResult->free();
        }
    }
    $tablesResult->free();
}

$conn->close();

// 转为JSON
$jsonSchema = json_encode($tableSchema, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo $jsonSchema;

补充说明

  • 如果你的项目用的是PDO扩展,写法会略有不同,但核心逻辑是一样的:先获取表名,再遍历处理每个表的内容/字段。
  • json_encode的参数可以根据需求调整,比如JSON_UNESCAPED_UNICODE能避免中文被转义,JSON_PRETTY_PRINT适合调试时输出格式化的JSON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:10:47