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 em sistemas UNIX
  1. 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

    ./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
    
    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.

    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

    ./configure --with-pdo-odbc=unixODBC,/usr/local
    
    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.
    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 e LONGVARCHAR) serão convertidos para UTF-8 ao ler ou gravar dados no banco de dados. Se false (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.

Opções de Configuração do PDO_ODBC
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.
Para mais detalhes e definições dos modos INI_*, consulte os Onde uma configuração deve ser definida.

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.

Warning

A correspondência relaxed não deve ser usada em um servidor compartilhado, por motivos de segurança.

Tip

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.

Table of Contents

  • PDO_ODBC DSN — Conectando-se a bancos de dados ODBC ou DB2