MySQL resultsets in JSON wandeln mit PHP

Viele Websiten die Javascript verwenden, nutzen das Datenformat JSON um Informationen mit einem Backend auszutauschen. Das JSON-Datenformat ist im Grunde eine Mischung zwischen XML und DOM-Array.

PHP stellt die interessante Funktion json_encode() zum konvertieren eines MySQL-Resultsets in das JSON Datenformat zur Verfügung. Für die umgekehrte Kommunikationsrichtung, JSON in assoziatives array wandeln, steht die Funktion json_decode() zur Verfügung.

Betrachten wir zunächst genauer wie man das Ergebnis einer SQL Abfrage in ein JSON Paket konvertiert:

function query_json($query){
    /* query from db */
    $result = mysql_query($query);
 
    /* pealing the array data from db object */        
    while ($row = mysql_fetch_assoc($result)) {
 
        $data[] = $row;
    }
 
    /*    checking if data has no rows */
    if(isset($data)){
        /*    convert data to json */
        $json = json_encode($data);
    }else{
        /*    set nothing to return */
        $json = null;
    }
 
    /* return the json result */
    return $json;
}

An diese Funktion kann man ein einfache SQL Abfrage übergeben, d.h. eine SQL Abfrage wie:

SELECT * FROM TABLE;

Das Ergebnis der übergebenen Abfrage wird in der folgenden Zeile von der Datenbank angenommen und in die temporäre Variable data gespeichert:

/* pealing the array data from db object */        
while ($row = mysql_fetch_assoc($result)) {
 
$data[] = $row;
}

Im weiteren Schritt sollte man überprüfen, ob überhaupt ein Ergebnis von der Datenbankabfrage zurück gekommen ist und wenn ja, dann wird das Ergebnis einfach mit der Funktion json_encode() umkonvertiert:

/*    checking if data has no rows */
 
if(isset($data)){
    /*    convert data to json */
    $json = json_encode($data);
}else{
    /*    set nothing to return */
    $json = null;
}

Das JSON ist damit eigentlich fertig strukturiert und kann direkt an das Frontend gesendet werden. Ich empfehele das Ergbnis der SQL Abfrage immer so zu strukturieren, wie es das Javascript im Frontend benötigt. SQL bietet hierbei jede menge mögliche Funktionen und Methoden. Um die Darstellung der Daten innerhalb des JSON-Paketes kümmert sich die Funktion json_encode() automatisch.

http://www.agile-coding.net/mysql-resultsets-in-json-wandeln-mit-php/