PDO_ODBC — драйвер, через который PHP получает доступ к базам данных, совместимым с драйверами ODBC (англ. сокр.: Open Database Connectivity) или библиотекой IBM DB2 Call Level Interface (DB2 CLI). Для этого драйвер реализует интерфейс модуля PDO. Драйвер 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::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.connection_pooling | "strict" | INI_ALL |
|
pdo_odbc.db2_instance_name | NULL | 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.