sql >> Database >  >> RDS >> Mysql

converteer mysql-resultaat naar json met de juiste typen

De onderstaande code is slechts een proof of concept. Het moet ingekapseld worden in een functie/methode en wat polijsten voordat het in productie kan worden gebruikt (bijv. call mysqli_fetch_field() in een lus en sla de objecten op die het retourneert voordat u een rij verwerkt, niet één keer voor elke rij).

Het gebruikt de functie mysqli_fetch_field() om informatie te krijgen over elke kolom van de resultatenset en om die kolommen met numerieke typen om te zetten in getallen. De waarden van MYSQLI_TYPE_* constanten zijn te vinden op de documentatiepagina van Mysqli vooraf gedefinieerde constanten .

// 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. Redenen om te upgraden naar SQL Server 2017

  2. Documenten opslaan en analyseren op Windows-bestandssysteem met SQL Server Semantic Search - Deel 2

  3. Fuzzy matching met T-SQL

  4. Converteer 'datetimeoffset' naar 'time' in SQL Server (T-SQL-voorbeelden)