PDO_ODBC — драйвер, который реализует интерфейс PHP Data Objects (PDO) для доступа из PHP к базам данных через драйверы 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::ATTR_DRIVER_NAME
, вызывают
метод PDO::getAttribute(), если код запускается с несколькими драйверами.
PDO_ODBC_TYPE
(string)
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. При чтении или записи данные в кодировке UTF-16 —
CHAR
, VARCHAR
и LONGVARCHAR
—
будут переконвертированны в кодировку UTF-8, если для константы установили значение true
.
Кодировку символов преобразует драйвер, если для константы задали значение по умолчанию — false
.
Поведение этих функций зависит от установок в 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.