PDO возвращает целочисленные столбцы в виде строки в PHP5.4

Прежде всего, я знаю, что существуют различные подобные вопросы о SO, такие какэто а такжеэто, Однако, когда я выбираю значения из таблицы, целые числа всегда выбираются в виде строки.

Я использую PHP5.4 (5.4.16-1 ~ dotdeb.1) и MYSQL5.5 (5.5.31 + dfsg-0 + wheezy1). Это написаноВот что собственный драйвер MySQL включен по умолчанию в PHP5.4.0. Но я все еще получаю строковые значения.

Я инициализирую объект PDO следующим образом.

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;
    }

Когда я вставляю, я пытался использоватьexecute(array(...)) формат, а также используетсяbindValue(...,PDO::PARAM_INT), но они не имели значения.

Например, вот как я вставляю новую строку.

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;
    }
}

Вот как я выбираю строки из таблицы

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;
}

Этого не произошло, когда я тестировал на XAMPP для Linux 1.8.1, которая использует PHP5.4.7. В настоящее время я использую nginx вместо Apache.

Что случилось?

Ответы на вопрос(1)

Ваш ответ на вопрос