質問編集履歴
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -95,26 +95,25 @@
|
|
95
95
|
|
96
96
|
- MySQLのテーブルは階層で作る事は出来ないのでしょうか?
|
97
97
|
|
98
|
-

|
99
99
|
|
100
|
-
|
101
100
|
- MySQLのテーブルは階層になっていませんが下記のように出力したいと思います。
|
102
101
|
|
103
102
|
```出力したいJSON
|
104
|
-
"
|
103
|
+
"type":"type01",
|
105
|
-
"
|
104
|
+
"properties":{
|
106
|
-
|
105
|
+
"properties01":"properties01の内容",
|
107
|
-
|
106
|
+
"properties02":"properties02の内容"
|
108
107
|
},
|
109
|
-
"
|
108
|
+
"material":{
|
110
|
-
|
109
|
+
"material01":{
|
111
|
-
|
110
|
+
"material01_shop01":"material_shop01の内容",
|
112
|
-
|
111
|
+
"material01_shop02":"material_shop02の内容"
|
113
|
-
|
112
|
+
},
|
114
|
-
|
113
|
+
"material02":{
|
115
|
-
|
114
|
+
"material02_shop01":"material02_shop01の購入先01の内容",
|
116
|
-
|
115
|
+
"material01_shop02":"material02_shop02の購入先02の内容"
|
117
|
-
|
116
|
+
},
|
118
117
|
},
|
119
118
|
"id":"0001"
|
120
119
|
```
|
1
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,4 +5,116 @@
|
|
5
5
|
|
6
6
|
http://pulogu.net/blog/020-computer/php/json-use/
|
7
7
|
|
8
|
-
また、そのような事をしたい場合に、ちょうど良い参考書があれば教えて頂けたら助かります。
|
8
|
+
また、そのような事をしたい場合に、ちょうど良い参考書があれば教えて頂けたら助かります。
|
9
|
+
|
10
|
+
|
11
|
+
追記:
|
12
|
+
回答をありがとうございます。
|
13
|
+
プログラムは多分全然出来ていないと思いますが追記させて頂きます。
|
14
|
+
SELECT文の後か前に、PHPで階層を作るようなプログラムにしないといけないと思うのですが
|
15
|
+
普通はどうやるのかがわかりません。
|
16
|
+
|
17
|
+
```PHPプログラム
|
18
|
+
<?php
|
19
|
+
function es($str) {
|
20
|
+
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
|
21
|
+
}
|
22
|
+
//エラー出力強制
|
23
|
+
ini_set( 'display_errors', 1 );
|
24
|
+
//すべてのエラー表示
|
25
|
+
error_reporting( E_ALL );
|
26
|
+
|
27
|
+
//データベースへの接続
|
28
|
+
define('DB_NAME', 'test');
|
29
|
+
define('DB_HOST', 'test');
|
30
|
+
define('DB_USER', 'test');
|
31
|
+
define('DB_PASS', 'test');
|
32
|
+
|
33
|
+
$dbName = DB_NAME;
|
34
|
+
|
35
|
+
$dsn = 'mysql:dbname=' . DB_NAME . ';host=' . DB_HOST . ';charset=utf8';
|
36
|
+
$option = array(
|
37
|
+
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
38
|
+
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
39
|
+
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
40
|
+
PDO::ATTR_EMULATE_PREPARES => false,
|
41
|
+
PDO::ATTR_STRINGIFY_FETCHES => false
|
42
|
+
);
|
43
|
+
?>
|
44
|
+
|
45
|
+
<!DOCTYPE html>
|
46
|
+
<html lang="ja">
|
47
|
+
<head>
|
48
|
+
<meta charset="utf-8">
|
49
|
+
<title>レコードを取り出す(すべて)</title>
|
50
|
+
</head>
|
51
|
+
<body>
|
52
|
+
<div>
|
53
|
+
<?php
|
54
|
+
|
55
|
+
//MySQLデータベースに接続する
|
56
|
+
try {
|
57
|
+
$db = new PDO($dsn, DB_USER, DB_PASS, $option);
|
58
|
+
|
59
|
+
// SQL文を作る(全レコード)
|
60
|
+
|
61
|
+
$sql = "SELECT CONCAT ('aaaaaaaaaaa') FROM test_json";
|
62
|
+
//$sql = "SELECT * FROM test_json";
|
63
|
+
|
64
|
+
$res = $db->query($sql, PDO::FETCH_ASSOC);
|
65
|
+
$res = $res !== false ? $res : [];
|
66
|
+
$result = [];
|
67
|
+
|
68
|
+
foreach($res as $row) {
|
69
|
+
$result[] = $row;
|
70
|
+
}
|
71
|
+
//json
|
72
|
+
$json = json_encode($result);
|
73
|
+
|
74
|
+
////json書き出し
|
75
|
+
$filename = "test_json.json";
|
76
|
+
|
77
|
+
$result = touch($filename);
|
78
|
+
|
79
|
+
if ($result){
|
80
|
+
// ファイルに書き出す
|
81
|
+
file_put_contents($filename, $json, LOCK_EX);
|
82
|
+
echo "{$filename}にデータを書き出しました。", "<hr>";
|
83
|
+
echo '<a href="get_contents.php">ファイルを読み込む</a>';
|
84
|
+
} else {
|
85
|
+
// ファイルエラー
|
86
|
+
echo '<span class="error">ファイルに保存できませんでした。</span>';
|
87
|
+
}
|
88
|
+
////json書き出しend
|
89
|
+
|
90
|
+
?>
|
91
|
+
</div>
|
92
|
+
</body>
|
93
|
+
</html>
|
94
|
+
```
|
95
|
+
|
96
|
+
- MySQLのテーブルは階層で作る事は出来ないのでしょうか?
|
97
|
+
|
98
|
+

|
99
|
+
|
100
|
+
|
101
|
+
- MySQLのテーブルは階層になっていませんが下記のように出力したいと思います。
|
102
|
+
|
103
|
+
```出力したいJSON
|
104
|
+
"タイプ":"タイプ01",
|
105
|
+
"属性":{
|
106
|
+
"属性01":"属性01の内容",
|
107
|
+
"属性02":"属性02の内容"
|
108
|
+
},
|
109
|
+
"素材":{
|
110
|
+
"素材01":{
|
111
|
+
"素材01の購入先01":"素材01の購入先01の内容",
|
112
|
+
"素材01の購入先02":"素材01の購入先02の内容"
|
113
|
+
},
|
114
|
+
"素材02":{
|
115
|
+
"素材02の購入先01":"素材02の購入先01の内容",
|
116
|
+
"素材02の購入先02":"素材02の購入先02の内容"
|
117
|
+
},
|
118
|
+
},
|
119
|
+
"id":"0001"
|
120
|
+
```
|