Mysql
 sql >> база данни >  >> RDS >> Mysql

конвертирайте mysql резултата в json с правилни типове

Кодът по-долу е само доказателство за концепцията. Нуждае се от капсулиране във функция/метод и известно полиране, преди да се използва в производството (напр. извикайте mysqli_fetch_field() в цикъл и съхранява обектите, които връща, преди да обработи всеки ред, а не веднъж за всеки ред).

Той използва функцията mysqli_fetch_field() за да получите информация за всяка колона от набора от резултати и преобразува в числа онези колони, които имат числови типове. Стойностите на MYSQLI_TYPE_* константите могат да бъдат намерени в страницата с документация на предварително дефинирани константи в 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. Автоматично убиване на продължителни заявки (MySql), Apache Tomcat DataSource

  2. Какво всъщност означава max_connections?

  3. MySQL извлича последния запис за група

  4. Екраниращи символи като $ и % | MySQL и PHP

  5. MySQL Boolean tinyint(1) съдържа стойности до 127?