sql >> Databasteknik >  >> RDS >> Mysql

hur man returnerar en mysql select som en array av arrayer i json med php

För json_encode för att returnera en JSON-array med array behöver du en numeriskt indexerad array.

Detta kan erhållas med följande generiska funktion:

    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);
    }

Används som i följande:

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

Där jsTable effektivt kommer att vara en array av arrayer. Notera alternativet withNames tillåta att lägga till kolumnnamnen som den första raden, användbart om du försöker överföra denna array till javascript för google visualisering .




  1. Fulltextsökning returnerar alltid tom resultatuppsättning

  2. Dynamisk pivot i oracle sql

  3. Kan inte krympa "skrivskyddad" databas | Krympa transaktionslogg när du använder AlwaysOn Availability Group

  4. mysql och php PDO - vad händer med en oengagerad transaktion om anslutningen stängs oväntat?