Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

chuyển đổi kết quả mysql thành json với các loại chính xác

Đoạn mã dưới đây chỉ là một bằng chứng về khái niệm. Nó cần được đóng gói trong một hàm / phương thức và một số thao tác đánh bóng trước khi sử dụng trong sản xuất (ví dụ:gọi mysqli_fetch_field() trong một vòng lặp và lưu trữ các đối tượng mà nó trả về trước khi xử lý bất kỳ hàng nào, không phải một lần cho mỗi hàng).

Nó sử dụng hàm mysqli_fetch_field() để nhận thông tin về từng cột của tập kết quả và chuyển đổi thành số các cột có kiểu số. Giá trị của MYSQLI_TYPE_* Bạn có thể tìm thấy hằng số trong trang tài liệu của Hằng số xác định trước 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. Chèn hàng mới với dữ liệu được tính toán từ các hàng khác

  2. Tạo đối tượng Ngày trong PHP cho các ngày trước năm 1970 ở định dạng nhất định

  3. MySQL hiển thị trạng thái - hoạt động hoặc tổng số kết nối?

  4. Hiệu suất CSV so với MySQL

  5. Giúp chỉnh sửa JSON để tạo một mảng thay vì một 'từ điển'