# PDO_ODBC: драйвер модуля PDO для СУБД ODBC и DB2

## Введение

PDO_ODBC — драйвер, через который PHP получает доступ к базам данных, совместимым с драйверами ODBC (англ. сокр.: Open Database Connectivity) или библиотекой IBM DB2 Call Level Interface (DB2 CLI). Для этого драйвер реализует интерфейс модуля PDO. Драйвер PDO_ODBC поддерживает три вида драйверов баз данных:

ibm-db2

  Драйвер поддерживает доступ к серверам IBM DB2 Universal Database, Cloudscape и Apache Derby через свободный клиент DB2 express-C.

unixODBC

  Драйвер поддерживает доступ к базам данных через менеджер драйверов unixODBC и собственные ODBC-драйверы баз данных.

generic

  Драйвер предлагает опцию компиляции для менеджеров ODBC-драйверов, которые драйвер PDO_ODBC не поддерживает явно.

В операционной системе Windows библиотеку php_pdo_odbc.dll включают как модуль в файле php.ini. Библиотека связана с диспетчером драйверов Windows ODBC Driver Manager, поэтому PHP доступны подключения к любой базе данных, которую занесли в каталог как системное имя источника данных System DSN.

## Установка

PDO_ODBC на UNIX системах

1. Модуль PDO_ODBC включён в исходный код PHP. Вы можете скомпилировать модуль как статический или разделяемый, используя следующий синтаксис configure.

   ibm_db2

         ./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/

     Для сборки PDO_ODBC для ibm-db2 вам потребуется предварительно установить заголовочные файлы пакета разработчика приложений DB2. Заголовочные файлы пакета разработчика приложений DB2 можно установить как с помощью установочного пакета сервера DB2, так и в составе отдельного клиента "DB2 Application Development Client", доступного для загрузки с » сайта поддержки IBM developerWorks.

     Если вы не укажете директорию установки библиотек и заголовочных файлов DB2, configure будет искать их в /home/db2inst1/sqllib.

   unixODBC

         ./configure --with-pdo-odbc=unixODBC,/usr/local

     Если вы не укажете директорию установки библиотек и заголовочных файлов unixODBC, configure будет искать их в /usr/local.
   generic

         ./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags

## Предопределённые константы

Драйвер определяет следующие константы и открывает доступ к ним только тогда, когда PHP собрали с поддержкой этого модуля, или модуль динамически загрузили при выполнении кода. Константы, которые зависят от драйвера, разрешается использовать только совместно с драйвером. Атрибуты одного драйвера с другим драйвером ведут себя неожиданно. Чтобы проверить название драйвера, которое содержит атрибут `PDO::ATTR_DRIVER_NAME`, вызывают метод PDO::getAttribute(), если код запускается с несколькими драйверами.

`PDO_ODBC_TYPE` (string)

`PDO::ODBC_ATTR_USE_CURSOR_LIBRARY` (int)
  Псевдоним `Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY`.
`PDO::ODBC_SQL_USE_IF_NEEDED` (int)
  Псевдоним `Pdo\Odbc::SQL_USE_IF_NEEDED`.
`PDO::ODBC_SQL_USE_DRIVER` (int)
  Псевдоним `Pdo\Odbc::SQL_USE_DRIVER`.
`PDO::ODBC_SQL_USE_ODBC` (int)
  Псевдоним `Pdo\Odbc::SQL_USE_ODBC`.
`PDO::ODBC_ATTR_ASSUME_UTF8` (bool)
  Псевдоним `Pdo\Odbc::ATTR_ASSUME_UTF8`.

## Настройка во время выполнения

Поведение функций зависит от установок в файле php.ini.

Конфигурационные опции PDO_ODBC
Имя | По умолчанию | Место изменения | Список изменений
--- | --- | --- | ---
pdo_odbc.connection_pooling | "strict" | `INI_ALL` |
pdo_odbc.db2_instance_name | NULL | `INI_SYSTEM` | Функция устарела и ее удалят в будущем.

Дополнительную информацию и определения режимов INI_* даёт раздел «Места установки параметров конфигурации».

Краткое разъяснение конфигурационных директив.

`pdo_odbc.connection_pooling` string

  Нужно ли объединять соединения ODBC. Может быть `"strict"`, `"relaxed"` или `"off"` (аналогично `""`). Параметр определяет как строго менеджер соединений должен сравнивать параметры соединений для выбора, создавать новое соединение или возвращать уже существующее. По умолчанию рекомендуется использовать `strict`, что означает, что сохранённое соединение будет возвращаться только, если все параметры точно совпадают. `relaxed` приведёт к тому, что закешированное соединение будет возвращено, если параметры схожи. Это приведёт к более активному использованию кеша, но может привести к утечке информации о соединении (к примеру) между виртуальными хостами.

  Эту настройку можно изменить только в php.ini и воздействует на все процессы; все модули, загруженные в процесс и использующие те же библиотеки ODBC будут зависеть от этой настройки, включая Унифицированный модуль ODBC.

  Внимание

  Значение `relaxed` не должно использоваться на общем хостинге в целях безопасности.

  Подсказка

  Если у вас нет очень серьёзного повода использовать значение, отличное от `strict` - не меняйте его.

`pdo_odbc.db2_instance_name` string

  Если вы скомпилировали PDO_ODBC с использованием `db2`, эта опция установит значение переменной окружения DB2INSTANCE в системах Linux и UNIX, равным выбранному имени экземпляра DB2. Это позволяет PDO_ODBC определить местоположение библиотек DB2 и произвести соединение с каталогом базы данных DB2.

  Эту настройку можно изменить только в php.ini, и она воздействует на все процессы; все модули, загруженные в процесс и использующие те же библиотеки ODBC будут зависеть от этой настройки, включая унифицированный модуль ODBC.

  Эта опция не работает в Windows.

## Содержание

- DSN-строка подключения через драйвер PDO_ODBC — Соединение с базами данных ODBC или DB2

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open