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