【问题标题】:Assistance building Array structure to recreate JSON file协助构建数组结构以重新创建 JSON 文件
【发布时间】: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

标签: php sql arrays json pdo


【解决方案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);

【讨论】:

  • 不完全在那里,但现在更近了
猜你喜欢
  • 2023-03-21
  • 2020-02-27
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多