sql >> Database teknologi >  >> RDS >> Mysql

konverter mysql-resultat til json med korrekte typer

Koden nedenfor er blot et proof of concept. Det skal indkapsles i en funktion/metode og noget polering, før det kan bruges i produktionen (f.eks. kald mysqli_fetch_field() i en løkke og gem de objekter, den returnerer, før den behandler en række, ikke én gang for hver række).

Den bruger funktionen mysqli_fetch_field() for at få information om hver kolonne i resultatsættet og konverterer de kolonner, der har numeriske typer, til tal. Værdierne for MYSQLI_TYPE_* konstanter kan findes på dokumentationssiden for Mysqli foruddefinerede konstanter .

// 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. Henter indekset for en indsat række

  2. 4 måder at kontrollere, om der findes en tabel i MariaDB

  3. Hvordan får man det samlede antal fundne rækker uden at overveje grænsen i BOB?

  4. Hvad betyder =*?