Funções ODBC e DB2 (PDO_ODBC)
Introdução
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:
- ibm-db2
-
Suporta acesso aos servidores IBM DB2 Universal Database, Cloudscape e Apache Derby por meio do cliente DB2 express-C gratuito.
- unixODBC
-
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.
- generic
-
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.
Instalação
-
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.
- ibm_db2
-
Para construir o PDO_ODBC com o tipo ibm-db2, é necessário ter os cabeçalhos de desenvolvimento do aplicativo DB2 instalados previamente na mesma máquina em que o PDO_ODBC estiver sendo compilado. Os cabeçalhos de desenvolvimento de aplicativos DB2 são uma opção instalável nos servidores DB2 e também estão disponíveis como parte do DB2 Application Development Client, gratuitamente no » site do IBM developerWorks.
./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.
- unixODBC
-
Se não for informado um local para as bibliotecas e cabeçalhos unixODBC para o comando configure, o PDO_ODBC usará o caminho padrão /usr/local.
./configure --with-pdo-odbc=unixODBC,/usr/local
- generic
-
./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags
Constantes pré-definidas
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) -
Esta opção controla se a biblioteca de cursores ODBC é usada. A biblioteca de cursores ODBC oferece suporte a alguns recursos ODBC avançados (por exemplo, cursores roláveis em bloco), que podem não estar implementados pelo driver. Os seguintes valores são suportados:
-
PDO::ODBC_SQL_USE_IF_NEEDED
(o padrão): usa a biblioteca de cursores ODBC quando necessário. -
PDO::ODBC_SQL_USE_DRIVER
: nunca usa a biblioteca de cursores ODBC -
PDO::ODBC_SQL_USE_ODBC
: sempre usa a biblioteca de cursores ODBC
-
-
PDO::ODBC_ATTR_ASSUME_UTF8
(bool) -
Somente Windows. Se
true
, os dados de caracteres codificados em UTF-16 (CHAR
,VARCHAR
eLONGVARCHAR
) serão convertidos para UTF-8 ao ler ou gravar dados no banco de dados. Sefalse
(o padrão), a conversão da codificação de caracteres pode ser feita pelo driver.
Configurações em Execução
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 defasado 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.
WarningA correspondência
relaxed
não deve ser usada em um servidor compartilhado, por motivos de segurança.TipEsta 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.
Table of Contents
- PDO_ODBC DSN — Conectando-se a bancos de dados ODBC ou DB2