Объекты данных (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.