sql >> Databáze >  >> RDS >> Mysql

jak vrátit výběr mysql jako pole polí v json pomocí php

Pro json_encode k vrácení pole JSON pole potřebujete číselně indexované pole.

To lze získat pomocí následující obecné funkce:

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

Používá se jako v následujícím:

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

Kde jsTable bude efektivně pole polí. Všimněte si možnosti withNames umožňuje přidat názvy sloupců jako první řádek, což je užitečné, pokud se pokusíte předat toto pole do javascriptu pro Google vizualizace .




  1. MySQL:Neplatná výchozí hodnota pro TIMESTAMP

  2. Oracle CLOB nemůže vložit více než 4000 znaků?

  3. Cizí klíč s více sloupci:Nastavte jeden sloupec na hodnotu Null ON DELETE namísto všech

  4. Potíže se znaky UTF-8; co vidím, není to, co jsem uložil