En aras de la exhaustividad (ya que todavía no puedo agregar comentarios), permítanme también agregar este detalle como otra respuesta:
(Editar: para leer después de darse cuenta de que los datos de origen (es decir, en el caso del OP, conjunto de resultados de la base de datos) podrían ser el problema (devolviendo columnas numéricas como cadenas), y json_encode () de hecho no fue el origen del problema)
Páginas del manual de ambos " mysql_fetch_array ":
Devuelve una matriz de cadenas que corresponde a la fila obtenida,
... y " mysql_ fetch_ row ":
Devuelve una matriz numérica de cadenas que corresponde a la fila recuperada
establece claramente que; Las entradas en la matriz devuelta serán cadenas.
(Estaba usando la clase DB en phpBB2 (sí, lo sé, ¡está obsoleto!), Y el método "sql_fetchrow ()" de esa clase usa "mysql_fetch_array ()")
Sin darme cuenta, ¡también terminé encontrando esta pregunta y entendiendo el problema! :)
Como Pascal Martin declaró anteriormente en sus comentarios de seguimiento, creo que una solución que se ocupa del problema del "tipo incorrecto" en la fuente (es decir, mediante el uso de la función " mysql_field_type () " y haciendo el casting justo después de buscar, (o otros métodos de búsqueda como "objeto"?)) serían los mejores en general.