Помощь в создании структуры массива для воссоздания файла JSON

#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. Не совсем там, но теперь ближе