Drupal 7 - Работа с БД через PHP PDO
С переходом на Drupal 7 мы переходим на новый Drupal DB abstraction layer API, который сделан на основе PDO. PDO уже давно используется в Zend framework, а так же во многих других php фреймворках. Все было так хорошо в Drupal 6 с написанием SQL-запросов, зачем нам что-то новое?
Для начала давайте разберемся, что такое PDO.
PDO - позволяет перенести php код работы с БД для работы с одной БД на другую БД. Допустим ваш сайт работал с MySQL, то вы можете безболезненно перейти на PostgreSQL. Насчет использования Oracle я пока не уверен, потому что не пробовал, но тоже должно работать.
PHP Data Objects (PDO) это расширение для PHP, которое добавляет легкий, составной интерфейс для доступа к БД. Драйвер каждой БД реализуется через PDO интерфейс и может быть расширен специфичными функциями каждого сервера БД.
PDO предоставляет доступ для abstraction layer, который в свою очередь используется для обработки запроса и представления данных. PDO не предоставляет абстракцию от БД, он не переписывает SQL и не эмулирует недостающие возможности для отдельных серверов БД. Вам следует использовать полномасштабный abstraction layer если вам необходимы эти возможности. PDO совместим в PHP 5.1 и выше и доступен как PECL расширение для PHP 5. PDO требует новые возможности ООП в ядре PHP 5 и не поддерживает старые версии PHP.
Это значит что программисты могут писать кросплатформенный код еще проще. PDO - это не abstraction layer как PearDB. PDO это больше доступ к БД, нежели API.
Если мы хотим писать модули для Drupal 7, то нам нужно использовать именно синтаксис PDO для написания запросов, чтобы все наши модули могли работать со многими базами данных.