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

mysqlの結果を正しいタイプのjsonに変換します

    以下のコードは、概念実証にすぎません。関数/メソッドにカプセル化する必要があり、本番環境で使用する前にある程度磨く必要があります(たとえば、mysqli_fetch_field()を呼び出します。 ループ内で、行ごとに1回ではなく、行を処理する前に返されるオブジェクトを格納します。

    関数 mysqli_fetch_field()を使用します 結果セットの各列に関する情報を取得し、数値タイプの列を数値に変換します。 MYSQLI_TYPE_*の値 定数は、Mysqliの事前定義された定数 のドキュメントページにあります。 。

    // Get the data
    $result = mysqli_query($db, "SELECT * FROM table WHERE id=1");
    $row    = mysqli_fetch_assoc($result);
    
    // Fix the types    
    $fixed = array();
    foreach ($row as $key => $value) {
        $info = mysqli_fetch_field($result);
        if (in_array($info->type, array(
                MYSQLI_TYPE_TINY, MYSQLI_TYPE_SHORT, MYSQLI_TYPE_INT24,    
                MYSQLI_TYPE_LONG, MYSQLI_TYPE_LONGLONG,
                MYSQLI_TYPE_DECIMAL, 
                MYSQLI_TYPE_FLOAT, MYSQLI_TYPE_DOUBLE
        ))) {
            $fixed[$key] = 0 + $value;
        } else {
            $fixed[$key] = $value;
        }
    }
    
    // Compare the results
    echo('all strings: '.json_encode($row)."\n");
    echo('fixed types: '.json_encode($fixed)."\n");
    


    1. T-SQLを使用してSQLServerのテーブルの列権限を取得します:sp_column_privileges

    2. SQL DROP DATABASE構文–DBMSによってリストされます

    3. PHP経由で多くのユーザーにメールを安全に送信する方法

    4. OrmliteでForeignCollectionフィールドをカーソルに入れる方法