php - 创建JSON文件并显示

标签 php mysql json mysqli

我想创建一个基于 MySQL 数据的 JSON 文件,但由于某些原因我的代码根本无法工作(我没有任何错误)

$results= $panel->query('SELECT * FROM servers ORDER BY id ASC;')->fetch_all();

$data = array();
foreach ($results as $row) {
    $data[] = $row;
}
$json_string = json_encode($data);
$file = 'servers.json';
file_put_contents($file, $json_string);

我想要什么:

{
    "ID": [
      "IPOFTHESERVERFROMDATABASE",
      PORTFROMDATABASE,
      "NAMEFROMDATABASE"
    ],
..
}

我得到了什么:

[["ID","NAME","IP","PORT","RCON"]]

最佳答案

您没有将任何内容放入 $data 数组中。

更改如下代码,在 json_encode() 之前将行加载到 $data 数组中

$results= $panel->query('SELECT * FROM servers ORDER BY id ASC;')->fetch_all();

$data = array();
foreach ($results as $row) {
    $data[] = $row;
}
$json_string = json_encode($data);
$file = 'servers.json';
file_put_contents($file, $json_string);

或者正如 Ray 下面所说,当您使用 fetchAll 时,您可能可以在没有 foreach 循环的情况下执行操作

$results= $panel->query('SELECT * FROM servers ORDER BY id ASC;')->fetch_all();

$json_string = json_encode($results);
$file = 'servers.json';
file_put_contents($file, $json_string);

编辑:你想要的输出?

你说你想要

{
    "ID": [
            "IP",
            PORT,
            "NAME"
    ],
    "ID": [
            "IP",
            PORT,
            "NAME"
    ]
}

这当然是不可能的,因为您有 2 个具有相同名称的键/属性,即 "ID"

$results= $panel->query('SELECT * FROM servers ORDER BY id ASC;')->fetch_all();

$data = array();
foreach ($results as $row) {
    $data[$row[0]] = [$row[2],$row[3],$row[1]];
}
$json_string = json_encode($data);
$file = 'servers.json';
file_put_contents($file, $json_string);

关于php - 创建JSON文件并显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897121/

相关文章:

c# - 如何使用 NewtonSoft 在 C# 中从另一个 json 替换 json?

php - 我有md5加密的密码,当他使用 "Forgot password"时如何将密码提供给用户?

java - 如何用Solr管理 "paging"?

php - 如何通过javascript用文本框生成数字?

mysql - 最快的 SQL 全文搜索

json - 将json解析为qml中的listview

php - 如何避免在每个页面中包含数据库连接文件?

mysql - 在 SSIS 中无法看到 "Microsoft OLE DB Provider for ODBC"驱动程序

php - 为什么我的 PHP 代码不检查所需 MYSQL 表的每一行

javascript - Angularjs 从 Json 对象中删除子对象