创建json文件并显示

mspsb9vt  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我想创建一个基于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"]]
hl0ma9xz

hl0ma9xz1#

你没有把任何东西放进 $data 数组。
按如下所示更改代码以将行加载到 $data 前面的数组 json_encode() 把它弄得乱七八糟

$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);

或者就像雷在下面说的,你用了 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"
    ]
}

当然这是不可能的,因为您有两个同名的键/属性,即。 "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);

相关问题