建立从SQL查询结果的JSON对象在PHP
我的数据库看起来是这样的:建立从SQL查询结果的JSON对象在PHP
我的目标是创建一个SQL查询,这将产生以下JSON对象:
var data = [
"year1":[
"val1":[
{"DATE":a1, "HEADER":b1, "MESSAGES":c1},
{"DATE":a2, "HEADER":b2, "MESSAGES":c2},
{"DATE":a6, "HEADER":b6, "MESSAGES":c6},
],
"val2":[
{"DATE":a5, "HEADER":b5, "MESSAGES":c5},
{"DATE":a8, "HEADER":b8, "MESSAGES":c8},
],
],
"year2":[
"val3":[
{"DATE":a3, "HEADER":b3, "MESSAGES":c3},
{"DATE":a4, "HEADER":b4, "MESSAGES":c4},
{"DATE":a7, "HEADER":b7, "MESSAGES":c7},
],
]
];
我已经问过一些非常相似的东西。但后来我没有使用“年”(所以现在有点复杂),只有“val1”,“val2”等值。到目前为止,我已经试过这样:
$connect = mysqli_connect("localhost", "root", "root", "Data");
$sql_year = "SELECT jaar FROM Data";
$result_year = mysqli_query($connect, $sql_year);
$data_year = array();
while ($row = mysqli_fetch_array($result_year, MYSQLI_ASSOC)) {
$data_year[$row['jaar']][] = array(
"maand"=> $row['maand'],
);
$sql_month = "SELECT * FROM Data WHERE jaar =".$row['jaar'];
$result_month = mysqli_query($connect, $sql_month);
$data_month = array();
while ($row = mysqli_fetch_array($result_month, MYSQLI_ASSOC)) {
$data_month[$row['maand']][] = array(
"day"=> $row['day'],
"weekday"=> $row['weekday'],
"zaal"=> $row['zaal'],
"stad" => $row['stad']
);
}
}
header('Content-Type: application/json');
echo json_encode($data_year);
要建立这种以JSON结构,你必须使用对象结构的这样一个概念:
<?php
$username='XXX';
$password='XXX';
$hostname = 'localhost';
$db_name = 'stack1';
//connection string with database
$dbhandle = mysqli_connect($hostname,$username,$password,$db_name)
or die("Unable to connect to MySQL");
//query fire
$result = mysqli_query($dbhandle,"select DISTINCT year from mydata;");
$json_response = array();
$array = array();
// fetch data in array format
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$p_year = $row['year'];
$result_year = mysqli_query($dbhandle,"select month from mydata where year='$p_year';");
while ($row = mysqli_fetch_array($result_year, MYSQLI_ASSOC)) {
$p_month = $row['month'];
$result_month = mysqli_query($dbhandle,"select * from mydata where month='$p_month';");
while ($row = mysqli_fetch_array($result_month, MYSQLI_ASSOC)) {
$array[$p_year][$p_month][] = array(
"DATE" => $row['date'],
"HEADER" => $row['header'],
"MESSAGE" => $row['message']
);
}
}
}
array_push($json_response,$array);
mysqli_free_result($result);
?>
但是“$ data_year [$ row ['maand']] [] = array(”year“=> $ row ['year'])”将'maand'和'year'变成了什么?当你看着我的JSON,这不是我想要的 –
我调整了答案 – Skykaza
它不工作。你是什么意思与'...和如此“ –
这** **真的要提到的PHP和标题和标签中的mysql。要挑选一些示例 - 如果您要问如何使用PostgreSQL(本机支持JSON数据类型)或从XQuery(它将数据库查询结果恢复为易于转换的形式一个可以被序列化为JSON的XML结构)。 –