Mysql
 sql >> Datenbank >  >> RDS >> Mysql

wie man eine mysql-Auswahl als ein Array von Arrays in json mit php zurückgibt

Für json_encode Um ein JSON-Array von Array zurückzugeben, benötigen Sie ein numerisch indiziertes Array.

Dies kann mit der folgenden, generischen Funktion erreicht werden:

    function SqlSelectToJsonTable($result,$withNames=false){
        // result a mysqli::query object, 
        // withNames: boolean, should the column names be returned as first row
        $return_arr = array();
        echo $result->num_rows;
        if ($result->num_rows > 0){
            if($withNames == true){
                $return_arr[0] = array();
                $fields = $result->fetch_fields();
                foreach ($fields as $field){
                    echo "column: ".$field->name." ";
                    array_push($return_arr[0],$field->name);
                }
            }
            while($row = $result->fetch_assoc()) {
                $return_arr[]= array_values($row);
            }
        } else {
            echo "0 results";
        }
        return json_encode($return_arr);
    }

Wird wie folgt verwendet:

    <?php
    $servername = "localhost";
    $username = "user";
    $password = "password";
    $dbname = "test";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "SELECT id, title FROM Posts";
    $result = $conn->query($sql);

    $jsonTable = SqlSelectToJsonTable($result);
    echo '<br/>'.$jsonTable;

    echo "<script type=\"text/javascript\">
        var jsTable = JSON.parse('".$jsonTable."');
        </script>";

    $conn->close();
    ?>

Wo jsTable effektiv ein Array von Arrays sein wird. Beachten Sie die Option withNames Das Hinzufügen der Spaltennamen als erste Zeile ist nützlich, wenn Sie versuchen, dieses Array an Javascript für Google zu übergeben Visualisierung .