Функции ODBC и DB2 (PDO_ODBC)

Введение

PDO_ODBC - драйвер, реализующий интерфейс PHP Data Objects (PDO) для доступа к базам данных через драйвер ODBC или через библиотеку IBM DB2 Call Level Interface (DB2 CLI). В текущий момент 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 и является рекомендованным для использования для соединения с базами данных Microsoft SQL Server.

Установка

PDO_ODBC на UNIX системах
  1. Начиная с PHP 5.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::getAttribute() для получения атрибута PDO::ATTR_DRIVER_NAME для проверки драйвера.

PDO::ODBC_ATTR_USE_CURSOR_LIBRARY (int)

Этот параметр определяет, используется ли библиотека курсоров ODBC. Библиотека курсоров ODBC поддерживает некоторые дополнительные особенности ODBC (например блочные прокручиваемые курсоры), которые могут не реализовываться драйвером. Поддерживаются следующие значения:

  • PDO::ODBC_SQL_USE_IF_NEEDED (по умолчанию): использовать библиотеку курсоров ODBC если необходимо.

  • PDO::ODBC_SQL_USE_DRIVER: никогда не использовать библиотеку курсоров ODBC.

  • PDO::ODBC_SQL_USE_ODBC: всегда использовать библиотеку курсоров ODBC.

PDO::ODBC_ATTR_ASSUME_UTF8 (bool)

Только для Windows. Если true, то данные в кодировке UTF-16 (CHAR, VARCHAR и LONGVARCHAR) будут сконвертированны в UTF-8 при чтении или записи. Если false (по умолчанию), преобразования кодировок производиться не будет.

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

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

Конфигурационные опции PDO_ODBC
Имя По умолчанию Место изменения Список изменений
pdo_odbc.connection_pooling "strict" PHP_INI_ALL Доступно с PHP 5.1.0.
pdo_odbc.db2_instance_name NULL PHP_INI_SYSTEM Доступно с PHP 5.1.1. Эта возможность устарела и будет обязательно удалена в будущем.
Для подробного описания констант PHP_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.

Содержание

  • PDO_ODBC DSN — Соединение с базами данных ODBC или DB2