下面的代码只是一个概念证明。在生产中使用它之前,需要将其封装在函数/方法中,并进行一些抛光(
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 resultsecho('all strings: '.json_enpre($row)."n");echo('fixed types: '.json_enpre($fixed)."n");


