2016-03-31 12 views
2

Ich habe wahrscheinlich ein einfaches Problem mit der Erzeugung von JSON-Ausgabe in PHP. Ich verwende den folgenden Code, um die relevanten Daten einer MySQL-Datenbank zu sammeln.Korrektes JSON-Format mit PHP

<?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(); 

Der Code erzeugt die folgende Ausgabe:

[ 
    { 
     "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" 
    } 
] 

Aber für das Werkzeug benutze ich das Format sollte sein:

{ 
    "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" 
     } 
    ] 
} 

Ich habe versucht, das Ergebnis in ein anderes Array zu setzen, aber In diesem Fall gibt die JSON-Ausgabe nur das erste Element des Datasets zurück.

Was mache ich falsch?

+1

Können Sie mit '$ Ereignisse versuchen [ 'Ereignisse'] [] = $ row;' innerhalb der Schleife und Vergessen Sie nicht, '$ events ['events']' als Array vor der Schleife zu deklarieren. – prava

+1

so das 'json_encode (array ('events' => $ events), JSON_PRETTY_PRINT);' funktioniert nicht für dich? –

Antwort

3

zuerst Ihre Anfrage an

ändern
SELECT title_hu,content,created_at FROM `events` 

Und für die Erstellung von JSON verwenden

$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(); 

Dies sollte den Trick tun.

Verwandte Themen