2016-03-31 8 views
2

PHPで適切なJSON出力を生成するには、おそらく単純な問題があります。私は以下のコードを使用して、関連するデータフォームをmysqlデータベースとして収集します。PHPを使用した適切なJSON形式

<?php 
header('Content-Type: application/json'); 
$mysqli = new mysqli("localhost", "root", "", "civitas"); 
if (!$mysqli->set_charset("utf8")) { 
     printf("Error loading character set utf8: %s\n", $mysqli->error); 
     exit(); 
} 
$events = array(); 

if ($result = $mysqli->query("SELECT title_hu FROM `events`")) { 
    while ($row = $result->fetch_assoc()) { 
     $events[] = $row; 
    } 
    echo json_encode($events, JSON_PRETTY_PRINT); 
} 
$result->close(); 
$mysqli->close(); 

コードは次のような出力を生成:

[ 
    { 
     "title_hu": "Zr\u00ednyi napok s", 
     "created_at": "2015-08-31 16:26:23" 
    }, 
    { 
     "title_hu": "Persona Non Grata 25. sz\u00fclet\u00e9snapi koncert", 
     "created_at": "2015-08-31 18:12:25" 
    }, 
    { 
     "title_hu": "Bek\u00f6lt\u00f6z\u0151s buli", 
     "created_at": "2015-08-31 18:22:29" 
    }, 
    { 
     "title_hu": "as", 
     "created_at": "2015-08-31 18:29:13" 
    }, 
    { 
     "title_hu": "dddd", 
     "created_at": "2015-08-31 18:29:58" 
    } 
] 

をしかし、私はフォーマットは、このする必要があります使用するツールのために:

{ 
    "events":[{ 
      "title_hu":"Teszt hír", 
      "content":" lorembalblalba ", 
      "created_at":"2015-08-31 18:29:58" 
     }, 
     { 
      "title_hu":"Teszt hír2", 
      "content":" lorembalblalba ", 
      "created_at":"2015-08-31 18:29:58" 
     }, 
     { 
      "title_hu":"Teszt hír3", 
      "content":" lorembalblalba ", 
      "created_at":"2015-08-31 18:29:58" 
     } 
    ] 
} 

私は別の配列に結果を入れてみましたが、その場合、JSON出力はデータセットの最初の項目のみを返します。

私は間違っていますか?

+1

を使用

SELECT title_hu,content,created_at FROM 'events' 

にクエリを変更し、JSONを作成するための、あなたは '$イベント[ 'イベント'] [] = $行で試すことができます;'ループの内側と'$ events ['events']'をループbefore配列として宣言することを忘れないでください。 – prava

+1

この 'json_encode(array( 'events' => $ events)、JSON_PRETTY_PRINT);はあなたのためには機能しませんか? –

答えて

3

まず

$rows = array();// define array 
$events = array();// define array 
while ($row = $result->fetch_assoc()) { 
     $events[] = $row;// assign table data to array 
    } 
$rows['events'] = $events;// assign your table data and array to an empty array 
echo json_encode($rows, JSON_PRETTY_PRINT);// your final JSON 
0
<?php 
header('Content-Type: application/json'); 
$mysqli = new mysqli("localhost", "root", "", "civitas"); 
if (!$mysqli->set_charset("utf8")) { 
     printf("Error loading character set utf8: %s\n", $mysqli->error); 
     exit(); 
} 
$events = array('events'=>array()); 

if ($result = $mysqli->query("SELECT title_hu, content, created_at FROM `events`")) { 
    while ($row = $result->fetch_assoc()) { 
     $events['events'][] = $row; 
    } 
    echo json_encode($events, JSON_PRETTY_PRINT); 
} 
$result->close(); 
$mysqli->close(); 

これはトリックを行う必要があります。

関連する問題