Establecer PDO::ATTR_EMULATE_PREPARES
a falso, si realmente lo necesita con PHP mal escrito
Si mysql_fetch_row
te devuelve int para SUM (nunca me importó verificar) - luego hace algo de magia como if (ctype_digit($val)) $row[$key] = (int)$val;
- para que puedas hacerlo en tu DBAL
Según tengo entendido, la forma en que funcionan las declaraciones preparadas utiliza la misma estructura de paquete para enviar y recuperar datos, y este paquete contiene tipos de datos.
Parece que el servidor puede devolver datos en 2 formatos:nativo y mysqlnd, según el tipo de solicitud. El último puede ser interpretado por la biblioteca del cliente para convertir el valor resultante.