Php 一个对象json中的两个查询mysql
我想将两个表转换为json,如下所示:Php 一个对象json中的两个查询mysql,php,mysql,arrays,json,object,Php,Mysql,Arrays,Json,Object,我想将两个表转换为json,如下所示: [ { "date":"2013-07-20", "id":"123456", "year":"2013", "people":[ { "name":"First", "age":"60", "city":"1" }, { "name":"second",
[
{
"date":"2013-07-20",
"id":"123456",
"year":"2013",
"people":[
{
"name":"First",
"age":"60",
"city":"1"
},
{
"name":"second",
"age":"40",
"city":"2"
},
{
"name":"third",
"age":"36",
"city":"1"
}
]
}
]
但我的代码的结果是:
[
{
"date":"2013-07-20",
"id":"123456",
"year":"2013",}
,{
"people":[
{
"name":"First",
"age":"60",
"city":"1"
},
{
"name":"second",
"age":"40",
"city":"2"
},
{
"name":"third",
"age":"36",
"city":"1"
}
]
}
]
代码为数组“people”创建了一个新对象,我希望它们位于同一个对象中
$result = mysql_query("SELECT * FROM data where id='123456'");
$fetch = mysql_query("SELECT name,age,city FROM people where id='123456'");
$json = array();
$json2['people'] = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$json[] = $row;
}
while ($row = mysql_fetch_assoc($fetch)){
$row_temp["name"]=$row["name"];
$row_temp["age"] = $row["age"];
$row_temp["city"] = $row["city"];
array_push($json2['people'],$row_temp);
}
array_push($json, $json2);
echo Json_encode($json);
如何使数组与表“data”位于同一对象中
非常感谢您非常接近,但是您希望People数组是外部数组的直接值,并将其包装在一个额外的数组中 另外,请注意,您正在使用的MySQL库已被弃用。这意味着它将在未来的版本中从PHP中删除。您应该将MySQL_*系列函数的调用替换为或
我想你可以试试这个
$result = mysql_query("SELECT * FROM data where id='123456'");
$fetch = mysql_query("SELECT name,age,city FROM people where id='123456'");
// I think, you'll get a single row, so no need to loop
$json = mysql_fetch_array($result, MYSQL_ASSOC);
$json2 = array();
while ($row = mysql_fetch_assoc($fetch)){
$json2[] = array(
'name' => $row["name"],
'age' => $row["age"],
'city' => $row["city"]
);
}
$json['people'] = $json2;
echo json_encode($json);
print\r($json)
的结果应该是这样的
Array
(
[date] => 2013-07-20
[year] => 2013
[id] => 123456
[people] => Array
(
[0] => Array
(
[name] => First
[age] => 60
[city] => 1
)
[1] => Array
(
[name] => second
[age] => 40
[city] => 2
)
)
)
[
{
"date" : "2013-07-20",
"year":"2013",
"id":"123456",
"people":
[
{
"name" : "First",
"age" : "60",
"city" : "1"
},
{
"name" : "second",
"age" : "40",
"city" : "2"
}
]
}
]
echo json\u encode($json)
的结果应该是
{
"date" : "2013-07-20",
"year":"2013",
"id":"123456",
"people":
[
{
"name" : "First",
"age" : "60",
"city" : "1"
},
{
"name" : "second",
"age" : "40",
"city" : "2"
}
]
}
如果您执行echo-json\u-encode(array($json))
,那么您将把整个json
包装在一个数组中,类似这样
Array
(
[date] => 2013-07-20
[year] => 2013
[id] => 123456
[people] => Array
(
[0] => Array
(
[name] => First
[age] => 60
[city] => 1
)
[1] => Array
(
[name] => second
[age] => 40
[city] => 2
)
)
)
[
{
"date" : "2013-07-20",
"year":"2013",
"id":"123456",
"people":
[
{
"name" : "First",
"age" : "60",
"city" : "1"
},
{
"name" : "second",
"age" : "40",
"city" : "2"
}
]
}
]
您可以等待使用键
people
,直到您加入两个数组的最后一刻,使其工作。在此之前,只需将数据加载到$json
和$json2
中即可
$json = array('date' => '2013', 'id' => '123456', 'year' => '2013');
$result = mysql_query("SELECT * FROM data where id='123456'");
$fetch = mysql_query("SELECT name,age,city FROM people where id='123456'");
$json = array();
$json2 = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$json[] = $row;
}
while ($row = mysql_fetch_assoc($fetch)){
$row_temp["name"]=$row["name"];
$row_temp["age"] = $row["age"];
$row_temp["city"] = $row["city"];
array_push($json2, $row_temp);
}
$json['people'] = $json2;
echo Json_encode($json);
谢谢你的回答。我尝试了三个示例,它们都响应并返回了相同的代码。{“0”:{“日期”:“2013-07-20”,“id”:“123456”,“年”:“2013”},“人”:[…]}我希望它是这样的[{“日期”:“2013-07-20”,“id”:“123456”,“年”:“2013”,“人”:[…]}]你知道如何纠正它吗?非常感谢。也许,您应该发布查询结果。您是指数据库中的查询结果或json编码的?两个查询的结果,而不是json。
SELECT*FROM data where id='123456'date year id 2013-07-20 2013 123456 SELECT name,age,城市来源于人,其中id='123456'姓名年龄城市id第一个60 1 123456第二个40 2 123456城市36 1 123456