me.neoascetic

PDO, FETCH_CLASS и нативные типы PHP

Немало времени потратил, пытаясь понять, почему же при выборке из MySQL и создании класса через PDO + FETCH_CLASS все его атрибуты - строки, а не нативные типы данных PHP. Это не позволяло делать строгие сравнения, например. Причём у коллеги на Винде все работало.

Выяснилось, что дело - в драйвере. По умолчанию в Debian ставился устаревший, не умеющий конвертацию. Замена его на mysqlnd решила проблему (в репозиториях доступен под именем php5-mysqlnd). Также необходимо выставить флажки PDO::ATTR_EMULATE_PREPARES и PDO::ATTR_STRINGIFY_FETCHES в false - при инстанциировании PDO или же после, используя метод setAttribute.