Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

konversi hasil mysql ke json dengan tipe yang benar

Kode di bawah ini hanyalah bukti konsep. Perlu enkapsulasi dalam fungsi/metode dan beberapa pemolesan sebelum menggunakannya dalam produksi (mis. panggil mysqli_fetch_field() dalam satu lingkaran dan simpan objek yang dikembalikannya sebelum memproses baris apa pun, bukan sekali untuk setiap baris).

Ini menggunakan fungsi mysqli_fetch_field() untuk mendapatkan informasi tentang setiap kolom dari kumpulan hasil dan mengonversi ke angka kolom-kolom yang memiliki tipe numerik. Nilai MYSQLI_TYPE_* konstanta dapat ditemukan di halaman dokumentasi Konstanta standar 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. Perbaiki "ERROR 1222 (21000):Pernyataan SELECT yang digunakan memiliki jumlah kolom yang berbeda" saat menggunakan UNION di MySQL

  2. MySQL INNER JOIN pilih hanya satu baris dari tabel kedua

  3. Kesalahan Pemotongan Data MySQL

  4. Meminta database MySQL dari Fungsi NodeJS AWS Lambda

  5. permintaan lambat mysql