Mysql
 sql >> Baza danych >  >> RDS >> Mysql

przekonwertuj wynik mysql na json z poprawnymi typami

Poniższy kod to tylko dowód koncepcji. Wymaga enkapsulacji w funkcji/metodzie i dopracowania przed użyciem w produkcji (np. wywołaj mysqli_fetch_field() w pętli i przechowuj zwracane obiekty przed przetworzeniem dowolnego wiersza, a nie raz dla każdego wiersza).

Używa funkcji mysqli_fetch_field() aby uzyskać informacje o każdej kolumnie zestawu wyników i konwertować na liczby te kolumny, które mają typy liczbowe. Wartości MYSQLI_TYPE_* stałe można znaleźć na stronie dokumentacji predefiniowanych stałych 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java - Jak uzyskać nazwę kolumny w zestawie wyników

  2. mySQL - Wstaw do trzech tabel

  3. MySQLdb Python wstawia %d i %s

  4. BŁĄD:połączenie jest w trybie automatycznego zatwierdzania

  5. Laravel - jak zaktualizować całą kolekcję