2017-04-10 38 views
1

比方说,我已经创建了我的数据库中的两个表:使用PHP MySQL中创建嵌套的JSON对象

`INSERT INTO `months` (`month_id`, `month_name`) VALUES ('1', 'January');` 

`INSERT INTO `weeks_and_days` (`week_id`, `week_nr`, `day_nr`) VALUES ('1', '1', '1'), ('2', '1', '2'), ('3', '1', '3'), ('4', '1', '4'), ('5', '1', '5'), ('6', '1', '6'), ('7', '1', '7');` 

什么应该是正确的PHP和SQL代码来获取准确以下嵌套JSON:

{ "month_name": "Yanuary", "week_nr": { "1": [{ "day_nr": [1, 2, 3, 4, 5, 6, 7] }] } }

我读了几个答案,并试图将它们应用于我的代码中,但是我表现得很好。我需要一些简单的公式,因为我在编程方面很新颖。

+1

尝试谷歌json_encode(),它是一个有用的函数,可以回显你的需要! –

+0

是的,但我想先使用sql querry,然后用PHP进行转换。 – Rico11112016

回答

0

而不是直接产生json关闭MySQL,你应该写的查询来获得不同的值,并把它们放在一起,产生json,如:

SELECT month_name 
FROM months 
WHERE month_id = 1; 

SELECT week_nr, GROUP_CONCAT(day_nr) 
FROM weeks_and_days 
GROUP BY week_nr; 

首先查询给你一个月的名称和第二个查询给你周/天的信息。

请注意,weeks_and_days表没有任何列month_id,它需要一个映射到months表(通过外键)。

+0

我可以使用'week_id'来映射'month_id'吗?你显示的querries的PHP代码如何? – Rico11112016

+0

@ Rico11112016您不能使用'week_id'来映射'month_id',因为一个月将会有几个星期。你需要有一个单独的列。对于PHP代码,看看这个(http://stackoverflow.com/questions/383631/json-encode-mysql-results)和这个(http://stackoverflow.com/questions/3281354/create-json-object - 正确的方式)链接。 –

+0

如果我希望每个'[1,2,3,4,5,6,7]'作为一个单独的**对象,那么这些查询将如何改变,所以“1”将是一个单独的对象,然后是“2”等等? – Rico11112016