首页 > 解决方案 > 以特定格式将数据库导出为 json

问题描述

将数据库导出到 json 时,我以这种形式得到它:

[
    {
        "id": "1",
        "siteId": "1",
        "siteUrl": "localhost",
        "identity": "mobie",
        "lastIp": "127.0.0.1",
        "lastLogin": "2018-05-17",
        "loginCountry": "GB",
    }
]

警告:第 81 行 C:\xamppp\htdocs\auth\mysql.php 中的非法字符串偏移 'id'

到所有 $user 变量。

我的数据库结构在第一个 json 输出中如上所示。

代码

public function db2json($query){
        $stmt = $this->db->prepare($query);
        $stmt->execute();
        $data=$stmt->fetch(PDO::FETCH_ASSOC);
        $output = [];

        foreach ( $data as $result )    {  // Change this to loop over the data
            $user = [];
            $user["id"] = $result["id"];
            $user["siteId"] = $result["siteId"];
            $user["lastIp"] = $result["lastIp"];
            $user["lastLogin"] = $result["lastLogin"];
            $user["loginCountry"] = $result["loginCountry"];

            $output[$result["siteUrl"]][$result["identity"]] = $user;
        }

        echo json_encode($output, JSON_PRETTY_PRINT);
   }

标签: phpjson

解决方案


我不得不建立一些测试数据,但这只是意味着你改变了foreach()to 循环你的数据库结果。这不仅仅是将结果直接分配给输出,而是根据您在输出中的需要创建各种数组......

$output = [];

foreach ( $data as $result )    {  // Change this to loop over the data
    $user = [];
    $user["id"] = $result["id"];
    $user["siteId"] = $result["siteId"];
    $user["lastIp"] = $result["lastIp"];
    $user["lastLogin"] = $result["lastLogin"];
    $user["loginCountry"] = $result["loginCountry"];

    $output[$result["siteUrl"]][$result["identity"]] = $user;
}

echo json_encode($output, JSON_PRETTY_PRINT);

使用我的测试数据,这输出......

{
    "localhost": {
        "mobie": {
            "id": "1",
            "siteId": "1",
            "lastIp": "127.0.0.1",
            "lastLogin": "2018-05-17",
            "loginCountry": "GB"
        },
        "user2": {
            "id": "1",
            "siteId": "1",
            "lastIp": "127.0.0.1",
            "lastLogin": "2018-05-17",
            "loginCountry": "GB"
        }
    },
    "othersite": {
        "user1": {
            "id": "1",
            "siteId": "1",
            "lastIp": "127.0.0.1",
            "lastLogin": "2018-05-17",
            "loginCountry": "GB"
        }
    }
}

推荐阅读