#php #sql #arrays #json #pdo
#php #sql #массивы #json #pdo
Вопрос:
Хорошо, итак, у меня есть следующая структура 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`)
)
Комментарии:
1. Где ваш второй запрос для получения информации о сети, вам нужно построить json в цикле так, как вам это нужно
Ответ №1:
Это должно дать вам желаемый JSON
$users = array();
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
$network = $result2->fetch(PDO::FETCH_ASSOC)
$row['NETWORK'] = $network
$users[] = $row;
}
echo json_encode($users);
Комментарии:
1. Не совсем там, но теперь ближе