###前提・実現したいこと
php, mysqlを使用
2つのクエリで取得し、jsonで結果を返す事を想定
###該当のソースコード
php
1$sql = "SELECT id, name FROM item WHERE id IN(1,2) "; 2$rs = mysql_query($sql); 3$data = array(); 4while($r = mysql_fetch_object($rs)) { 5 $data[] = $r; 6 $item_id = $r->id; 7 $sql2 = "SELECT i.staff_id, s.name staff_name "; 8 $sql2 = "FROM item_staff i "; 9 $sql2 = "LEFT JOIN staff s ON i.staff_id = s.id "; 10 $sql2 = "WHERE i.item_id = ".$item_id." "; 11 while($r2 = mysql_fetch_object($rs2) { 12 $data2[] = $r2; 13 } 14 $data[] = $data2; 15} 16header('Content-type: application/json'); 17echo json_encode($data);
###結果
JSON
1[ 2 { 3 "id":"1", 4 "name":"aaa" 5 }, 6 [ 7 { 8 "staff_id":"100", 9 "staff_name":"田中" 10 }, 11 { 12 "staff_id":"200", 13 "staff_name":"鈴木" 14 } 15 ], 16 { 17 "id":"2", 18 "name":"bbb" 19 }, 20 [ 21 { 22 "staff_id":"100", 23 "staff_name":"田中" 24 }, 25 { 26 "staff_id":"300", 27 "staff_name":"佐藤" 28 }, 29 { 30 "staff_id":"400", 31 "staff_name":"山田" 32 } 33 ] 34]
本来であれば2つのオブジェクトの中にスタッフの配列がそれぞれ挿入されているように結合させたい。
以下の様な
JSON
1[ 2 { 3 "id":"1", 4 "name":"aaa", 5 "staff":[ 6 { 7 "staff_id":"100", 8 "staff_name":"田中" 9 }, 10 { 11 "staff_id":"200", 12 "staff_name":"鈴木" 13 } 14 ] 15 }, 16 { 17 "id":"2", 18 "name":"bbbb", 19 "staff":[ 20 { 21 "staff_id":"100", 22 "staff_name":"田中" 23 }, 24 { 25 "staff_id":"300", 26 "staff_name":"佐藤" 27 }, 28 { 29 "staff_id":"400", 30 "staff_name":"山田" 31 } 32 ] 33 }, 34]
###バージョン
PHP 5.6.30
mysql 5.7.18
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/10 00:56