PDO_ODBC é um driver que implementa a interface aos Objetos de Dados PHP (PDO) para permitir acesso do PHP a bancos de dados através de drivers ODBC ou através da biblioteca IBM DB2 Call Level Interface (DB2 CLI). O PDO_ODBC atualmente suporta três diferentes "sabores" de drivers de banco de dados:
Suporta acesso aos servidores IBM DB2 Universal Database, Cloudscape e Apache Derby por meio do cliente DB2 express-C gratuito.
Suporta acesso a servidores de banco de dados por meio do gerenciador de driver unixODBC e dos próprios drivers ODBC do banco de dados.
Oferece uma opção de compilação para gerenciadores de driver ODBC que não são explicitamente suportados por PDO_ODBC.
No Windows, php_pdo_odbc.dll deve estar habilitado como extensão no php.ini. Ele está vinculado ao Windows ODBC Driver Manager para que o PHP possa se conectar a qualquer banco de dados catalogado como um DSN de sistema.
PDO_ODBC está incluído no código-fonte do PHP. Pode-se compilar a extensão PDO_ODBC como um módulo estático ou compartilhado usando os seguintes comandos configure.
./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
Se não for informado um local para as bibliotecas e cabeçalhos do DB2 para o comando configure, o PDO_ODBC usará o caminho padrão /home/db2inst1/sqllib.
./configure --with-pdo-odbc=unixODBC,/usr/local
./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags
As constantes abaixo são definidas por
este driver e só estarão disponíveis quando a extensão tiver sido
compilada no PHP ou tiver sido carregada dinamicamente em tempo de execução. Além disso, estas
constantes específicas do driver só devem ser usadas se este driver estiver sendo usado.
Usar atributos específicos de um driver com outro driver pode resultar em
comportamento inesperado. PDO::getAttribute() pode ser usada para
obter o atributo PDO::ATTR_DRIVER_NAME
para verificar o
driver, se o código puder ser executado com vários drivers.
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
.
O comportamento destas funções é afetado pelas configurações do php.ini.
Nome | Padrão | Modificável | Registro de Alterações |
---|---|---|---|
pdo_odbc.connection_pooling | "strict" | INI_ALL |
|
pdo_odbc.db2_instance_name | NULL | INI_SYSTEM |
Este recurso descontinuado certamente será removido no futuro. |
Aqui está uma breve explicação das diretivas de configuração.
pdo_odbc.connection_pooling
string
Informa se as conexões ODBC devem ser agrupadas. Pode ser "strict"
,
"relaxed"
ou "off"
(igual a
""
). O parâmetro descreve quão rigoroso o gerenciador
de conexões deve ser ao comparar parâmetros de conexão com conexões agrupadas
existentes. strict
é o padrão recomendado e
resultará no uso de conexões em cache somente quando todos os parâmetros
de conexão tiverem correspondência exata. relaxed
resultará no
uso de conexões em cache quando parâmetros de conexão semelhantes forem
usados. Isso pode resultar no aumento do uso do cache, correndo o risco
de sangrar informações de conexão entre (por exemplo) servidores virtuais.
Esta configuração só pode ser alterada no arquivo php.ini e afeta todo o processo; quaisquer outros módulos carregados no processo que usem as mesmas bibliotecas ODBC também serão afetados, incluindo a extensão ODBC unificada.
A correspondência relaxed
não deve ser usada em um servidor
compartilhado, por motivos de segurança.
Esta configuração deve ser mantida na configuração padrão strict
a menos que exista um bom motivo para alterá-la.
pdo_odbc.db2_instance_name
string
Se você o PDO_ODBC for compilado usando o tipo db2
,
esta configuração definirá o valor da variável de ambiente DB2INSTANCE nos
sistemas operacionais Linux e UNIX para o nome especificado da instância
do DB2. Isso permite que o PDO_ODBC resolva o local das bibliotecas DB2
e estabeleça conexões catalogadas com bancos de dados DB2.
Esta configuração só pode ser alterada no arquivo php.ini e afeta todo o processo; quaisquer outros módulos carregados no processo que usem as mesmas bibliotecas ODBC também serão afetados, incluindo a extensão ODBC unificada.
Esta configuração não tem efeito no Windows.