MySQL,PHP初心者です。phpMyadminから取出したMySQLのデータをjson_encodeする時に、階層構造を作りたいのですが、どうしていいか分かりません。
最初はCONCATを使って、階層の上の部分を追加しようとしたのですが、うまく行かず、
下記のような記事を見つけましたが、丁度この逆のことがしたいと思っています。
アドバイスを頂けたら助かります。
http://pulogu.net/blog/020-computer/php/json-use/
また、そのような事をしたい場合に、ちょうど良い参考書があれば教えて頂けたら助かります。
追記:
回答をありがとうございます。
プログラムは多分全然出来ていないと思いますが追記させて頂きます。
SELECT文の後か前に、PHPで階層を作るようなプログラムにしないといけないと思うのですが
普通はどうやるのかがわかりません。
PHPプログラム
1<?php 2function es($str) { 3 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 4} 5//エラー出力強制 6ini_set( 'display_errors', 1 ); 7//すべてのエラー表示 8error_reporting( E_ALL ); 9 10//データベースへの接続 11define('DB_NAME', 'test'); 12define('DB_HOST', 'test'); 13define('DB_USER', 'test'); 14define('DB_PASS', 'test'); 15 16$dbName = DB_NAME; 17 18$dsn = 'mysql:dbname=' . DB_NAME . ';host=' . DB_HOST . ';charset=utf8'; 19$option = array( 20 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 21 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 22 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, 23 PDO::ATTR_EMULATE_PREPARES => false, 24 PDO::ATTR_STRINGIFY_FETCHES => false 25); 26?> 27 28<!DOCTYPE html> 29<html lang="ja"> 30<head> 31<meta charset="utf-8"> 32<title>レコードを取り出す(すべて)</title> 33</head> 34<body> 35<div> 36 <?php 37 38 //MySQLデータベースに接続する 39 try { 40 $db = new PDO($dsn, DB_USER, DB_PASS, $option); 41 42 // SQL文を作る(全レコード) 43 44 $sql = "SELECT CONCAT ('aaaaaaaaaaa') FROM test_json"; 45 //$sql = "SELECT * FROM test_json"; 46 47 $res = $db->query($sql, PDO::FETCH_ASSOC); 48 $res = $res !== false ? $res : []; 49 $result = []; 50 51 foreach($res as $row) { 52 $result[] = $row; 53 } 54 //json 55 $json = json_encode($result); 56 57////json書き出し 58 $filename = "test_json.json"; 59 60 $result = touch($filename); 61 62 if ($result){ 63 // ファイルに書き出す 64 file_put_contents($filename, $json, LOCK_EX); 65 echo "{$filename}にデータを書き出しました。", "<hr>"; 66 echo '<a href="get_contents.php">ファイルを読み込む</a>'; 67 } else { 68 // ファイルエラー 69 echo '<span class="error">ファイルに保存できませんでした。</span>'; 70 } 71////json書き出しend 72 73 ?> 74</div> 75</body> 76</html>
- MySQLのテーブルは階層で作る事は出来ないのでしょうか?
- MySQLのテーブルは階層になっていませんが下記のように出力したいと思います。
"type":"type01", "properties":{ "properties01":"properties01の内容", "properties02":"properties02の内容" }, "material":{ "material01":{ "material01_shop01":"material_shop01の内容", "material01_shop02":"material_shop02の内容" }, "material02":{ "material02_shop01":"material02_shop01の購入先01の内容", "material01_shop02":"material02_shop02の購入先02の内容" }, }, "id":"0001"
回答1件
あなたの回答
tips
プレビュー