PDO_ODBC - драйвер, реализующий интерфейс PHP Data Objects (PDO) для доступа к базам данных через драйвер ODBC или через библиотеку IBM DB2 Call Level Interface (DB2 CLI). В текущий момент PDO_ODBC поддерживает различные "оттенки" драйверов баз данных:
Поддержка доступа к серверам IBM DB2 Universal Database, Cloudscape и Apache Derby через свободный клиент DB2 express-C.
Поддерживает доступ к базам данных через менеджер драйверов unixODBC и собственные ODBC драйверы баз данных.
Предоставляет опцию компиляции менеджеров драйверов ODBC, которые не поддерживаются PDO_ODBC напрямую.
В Windows php_pdo_odbc.dll должен быть включён как модуль в php.ini. Он собирается с участием Windows ODBC Driver Manager, поэтому PHP может подключаться к любой базе данных, определённой как System DSN.
Модуль PDO_ODBC включён в исходный код PHP. Вы можете скомпилировать модуль как статический или разделяемый, используя следующий синтаксис configure.
./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
Если вы не укажете директорию установки библиотек и заголовочных файлов DB2, configure будет искать их в /home/db2inst1/sqllib.
./configure --with-pdo-odbc=unixODBC,/usr/local
./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.connection_pooling | "strict" | PHP_INI_ALL | |
pdo_odbc.db2_instance_name | NULL | PHP_INI_SYSTEM | Эта возможность устарела и будет обязательно удалена в будущем. |
Краткое разъяснение конфигурационных директив.
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.