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

převést výsledek mysql na json se správnými typy

Níže uvedený kód je pouze důkazem konceptu. Před použitím ve výrobě potřebuje zapouzdření ve funkci/metodě a nějaké vyleštění (např. volání mysqli_fetch_field() ve smyčce a ukládat objekty, které vrací, před zpracováním jakéhokoli řádku, nikoli jednou pro každý řádek).

Používá funkci mysqli_fetch_field() získat informace o každém sloupci sady výsledků a převést na čísla ty sloupce, které mají číselné typy. Hodnoty MYSQLI_TYPE_* konstanty lze nalézt na stránce dokumentace Předdefinované konstanty 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. Primární klíč automatického přírůstku MySQL se zvýší o 10

  2. MySQL indexy - kolik jich stačí?

  3. Dynamický název sloupce pomocí připraveného příkazu + SQL dotaz s proměnnou obsahující 's

  4. Je možné provést cizí klíč MySQL do jedné ze dvou možných tabulek?