2017-04-10 8 views
1

を使用して、ネストされたJSONオブジェクトを作成するとのは、私は私のデータベースに2つのテーブルを作成したとしましょう:PHPのmysqlの

`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] }] } }

私はいくつかの答えを読んで、私のコードでそれらを適用しようとしましたが、失敗しました。 シンプルなの式が必要です。私はプログラミングではかなり新しいです。代わりに、直接MySQLのオフjsonを生成する

+1

Google json_encode()を試すと、必要なものをエコーできる便利な機能です! –

+0

はい、私はまずSQLクエリーを作成し、それをPHPで変換します。 – Rico11112016

答えて

0

、あなたは別の値を取得するためのクエリを記述し、jsonを生成し、それらを一緒に置く必要があり、例えば:2番目のクエリが与え

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'でマップすることはできますか?あなたが示したクエリーのPHPコードはどうですか? – Rico11112016

+0

@ Rico11112016 'month_id'でマップするのに' week_id'を使うことはできません。なぜなら、1ヶ月は数週間かかるからです。これには別の列が必要です。 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"は別のオブジェクト、等々? – Rico11112016