Объекты данных (PHP Data Objects, PDO) были представлены в виде PECL-модуля в PHP 5.0 и стали основной частью PHP в PHP 5.1.x. Модуль PDO предоставляет согласованный интерфейс для доступа к базе данных и используется вместе с драйверами PDO, специфичными для базы данных. Каждый драйвер может также иметь собственные функции, но основная функциональность для доступа к данным, например, выполнение запросов и получение результатов, охватываются функциями PDO, используя драйвер при создании через PDO::__construct().
Обратите внимание, что модуль PDO и его драйверы предназначены для создания общих модулей. Это позволит легко обновлять драйверы из PECL, не заставляя вас пересобирать весь PHP.
В момент выпуска PHP 5.1.x PDO готов к широкому тестированию и может быть использован в большинстве ситуаций. Однако, важно понимать, что PDO и его драйверы относительно новые и поэтому в них могут отсутствовать специфичные для базы данных возможности; тщательно проверяйте PDO, прежде чем использовать его в новых проектах.
Устаревший код обычно полагается на ранее существовавшие расширения баз данных, которые все еще поддерживаются.
В PHP 4 была встроена поддержка MySQL 3. С выпуском PHP 5.0 появились два модуля MySQL под названием 'mysql' и 'mysqli', которые были разработаны для поддержки MySQL < 4.1 и MySQL 4.1 и выше, соответственно. С появлением PDO, обеспечивающий очень быстрый интерфейс для всех баз данных, драйвер PDO_MYSQL может поддерживать любую из существующих версий (MySQL 3, 4 or 5) в коде PHP, написанном для PDO, в зависимости от библиотеки MySQL, используемой при компиляции. Устаревшие модули MySQL все еще остаются по причине обратной совместимости, но по умолчанию отключены.
В PHP 5.0.x поддержка SQLite 2 обеспечивалась встроенным модулем sqlite, который также был доступен как модуль PECL в PHP 4.3 и PHP 4.4. С появлением PDO модуль sqlite удваивается для поддержки в качестве PDO-драйвера sqlite2; это связано с тем, что модуль sqlite в PHP 5.1.x зависит от модуля PDO.
PHP 5.1.x поставляется с несколькими альтернативными интерфейсами для sqlite:
Модуль sqlite предоставляет "классический" процедурный и объектно-ориентированный API sqlite, который вы, возможно, использовали в предыдущих версиях PHP. Он также предоставляет драйвер PDO "sqlite2", который позволяет вам получить доступ к устаревшим базам данных SQLite 2 с использованием API PDO.
PDO_SQLITE предоставляет драйвер "sqlite" версии 3. SQLite 3 значительно превосходит SQLite версии 2, но форматы файлов двух версий несовместимы.
Если ваш проект, использующий SQLite, уже написан и работает с более ранними версиями PHP, то вы можете продолжать использовать ext/sqlite без проблем, но вам нужно будет явно включить PDO и sqlite. Новые проекты должны использовать PDO и драйвер sqlite (с версией 3), поскольку он быстрее SQLite 2, в нем улучшена блокировка при конкурентном доступе и поддерживается как подготовленные запросы, так и столбцы с бинарными данными.
Вы должны включить PDO для использования модуля SQLite. Если вы хотите собрать модуль PDO в качестве общего модуля, модуль SQLite также должен быть создан соответствующим образом. То же самое относится к любому модулю, предоставляющему драйвер PDO.