【发布时间】:2014-08-17 22:10:31
【问题描述】:
好的,所以我有以下 JSON 结构,
[
{
"User_ID": "2",
"DESCRIPTION": "No Description Specified",
"AGE": "20",
"COUNTRY": "UK",
"GENDER": "MALE",
"ORIENTATION": "Straight",
"PROFILE_IMG": "Thumb1403569297.jpg"
}
]
我正在从我的数据库中返回这些数据,构建一个结果数组,然后对其进行 json 编码。
"SELECT User_Posts.User_ID,
User_Account_Details.DESCRIPTION AS DESCRIPTION,
User_Account_Details.AGE AS AGE,
User_Account_Details.COUNTRY AS COUNTRY,
User_Account_Details.GENDER AS GENDER,
User_Account_Details.ORIENTATION AS ORIENTATION,
User_Account_Details.PROFILE_IMG AS PROFILE_IMG
FROM User_Posts
INNER JOIN User_Account_Details ON User_Posts.User_ID = User_Account_Details.User_ID;
"
和
$users = array();
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
$users[] = $row;
}
echo json_encode($users);
但是,这个:
[
{
"User_ID": "2",
"DESCRIPTION": "No Description Specified",
"AGE": "20",
"COUNTRY": "UK",
"GENDER": "MALE",
"ORIENTATION": "Straight",
"PROFILE_IMG": "Thumb1403569297.jpg",
"NETWORKS": [
{
"TWITTER": "USERBOB"
},
{
"KIK": "BLLOO"
}
]
}
]
是我想要实现的结构吗,这可能需要一个单独的 SQL 查询来收集“网络”,我的问题是“我必须如何”构造我的循环并构建数组,这样输出?
网络查询:
SELECT User_Posts.User_ID,
User_Social_Networks.NETWORK AS NETWORK,
User_Social_Networks.USERNAME AS USERNAME
FROM User_Posts
LEFT JOIN User_Social_Networks ON User_Posts.User_ID = User_Social_Networks.User_ID;
网络sql结构
CREATE TABLE IF NOT EXISTS `User_Social_Networks` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`USER_ID` int(11) NOT NULL,
`NETWORK` varchar(12) NOT NULL,
`USERNAME` varchar(30) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `User_id_network_id` (`USER_ID`,`NETWORK`),
KEY `USER_ID` (`USER_ID`)
)
【问题讨论】:
-
你第二次查询网络信息在哪里,你需要按照你需要的方式在循环中构建json