sql >> データベース >  >> RDS >> Mysql

phpを使用してjsonの配列の配列としてmysqlselectを返す方法

    json_encodeの場合 配列のJSON配列を返すには、数値インデックス付きの配列が必要です。

    これは、次の総称関数で取得できます。

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

    次のように使用されます:

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

    ここで、jsTableは事実上配列の配列になります。オプションwithNamesに注意してください 列名を最初の行として追加できるようにします。これは、この配列をjavascriptforgoogleに渡そうとする場合に便利です。視覚化




    1. Transact-SQLを使用してストアドプロシージャの定義を取得する4つの方法

    2. SQLで月の最初の日を選択するにはどうすればよいですか?

    3. 最後に追加されたアイテムのインスタンスを取得するにはどうすればよいですか?

    4. テーブルにマップされていないエンティティに休止状態のクエリ言語を使用できますか?