PDO devuelve columnas enteras como cadena en PHP5.4

En primer lugar, soy consciente de que hay varias preguntas similares sobre SO comoesta yesta. Sin embargo, cuando recupero valores de una tabla, los enteros siempre se obtienen como una cadena.

Estoy usando PHP5.4 (5.4.16-1 ~ dotdeb.1) y MYSQL5.5 (5.5.31 + dfsg-0 + wheezy1). Está escritoaquí ese controlador nativo de MySQL está habilitado por defecto en PHP5.4.0. Pero todavía tengo valores de cadena.

Inicializo un objeto DOP de la siguiente manera.

try {
        $dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8';

        $db = new PDO($dsn,DB_USER,DB_PASS);

        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    } catch (PDOException $e) {
        header('HTTP/1.1 500');
        exit;
    } catch (Exception $e) {
        header('HTTP/1.1 500');
        exit;
    }

Cuando inserto, traté de usarexecute(array(...)) formato y también se utilizabindValue(...,PDO::PARAM_INT), pero no hicieron la diferencia.

Por ejemplo, aquí es cómo inserto una nueva fila.

public function insertList ($db,$account_id,$list_name) {
    $sql = $db->prepare('INSERT INTO lists VALUES (?,?,?,?,?)');

    try {
        // $sql->execute(array($list_name,0,0,0,$account_id));

        $sql->bindValue(1,$list_name,PDO::PARAM_STR);
        $sql->bindValue(2,0,PDO::PARAM_INT);
        $sql->bindValue(3,0,PDO::PARAM_INT);
        $sql->bindValue(4,0,PDO::PARAM_INT);
        $sql->bindValue(5,$account_id,PDO::PARAM_INT);
        $sql->execute();
    } catch (PDOException $e) {
        header('HTTP/1.1 500');
        exit;
    } catch (Exception $e) {
        header('HTTP/1.1 500');
        exit;
    }
}

Así es como obtengo filas de una tabla.

public function fetchLists ($db,$account_id) {
    $sql = $db->prepare('SELECT * FROM lists WHERE account_id=?');

    try {
        $sql->execute(array($account_id));

        $result = $sql->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        header('HTTP/1.1 500');
        exit;
    } catch (Exception $e) {
        header('HTTP/1.1 500');
        exit;
    }

    return $result;
}

Esto no ocurrió cuando probé en XAMPP para Linux 1.8.1 que usa PHP5.4.7. Actualmente uso nginx en lugar de Apache.

¿Qué está mal?

Respuestas a la pregunta(1)

Su respuesta a la pregunta