# Funciones de ODBC y DB2 (PDO_ODBC)

## Introducción

PDO_ODBC es un controlador que implementa la interfaz de Objetos de datos de PHP (PDO) para habilitar el acceso desde PHP a bases de datos a través de contorladores ODBC o de la biblioteca IBM DB2 Call Level Interface (DB2 CLI). PDO_ODBC admite actualmente tres "sabores" diferentes de controladores de bases de datos:

ibm-db2

  Da soporte para el acceso a servidores de IBM DB2 Universal Database, Cloudscape, y Apache a través del cliente gratuito DB2.

unixODBC

  Da soporte para el acceso a servidores de bases de datos a través del administrador de gestores de unixODBC y de los controladores de ODBC proppietarios de bases de datos.

generic

  Ofrece una opción de compilación para los administradores de gestores de ODBC que no están admitidos explícitamente pore PDO_ODBC.

En Windows, PDO_ODBC está construido dentor del núcleo de PHP de manera predeterminada. Está vinculado con Windows ODBC Driver Manager, por lo que PHP puede conectarse a cualquier base de datos catalogada en un DSN de sistema, y es el controlador recomendado para conectarse a bases de datos de Microsoft SQL Server.

## Instalación

PDO_ODBC en sistemas UNIX

1. A partir de PHP 5.1, PDO_ODBC está incluido en los ficheros fuente de PHP. Se puede compilar la extensión PDO_ODBC como un módulo estático o compartido usando los siguientes comandos configure.

   ibm_db2

         ./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/

     Para contruir PDO_ODBC con el sabor ibm-db2, se han de tener instaladas previamente las cabeceras de desarrollo de aplicaciones de DB2 en la misma máquina en la que se compile PDO_ODBC. Las cabeceras de desarrollo de aplicaciones de DB2 son una opción instalable en los servidores de DB2, y también están disponibles como parte de DB2 Application Development Client, disponible para descargar gratuitamente desde el » sitio de soporte de IBM DB2 Universal Database.

     Si no se proporciona una ubicación para las bibliotecas y cabeceras de DB2 al comando configure, PDO_ODBC usará como valor predeterminado /home/db2inst1/sqllib.

   unixODBC

         ./configure --with-pdo-odbc=unixODBC,/usr/local

     Si no se proporciona una ubicación para las bibliotecas y cabeceras de unixODBC al comando configure, PDO_ODBC usará como valor predetermiando /usr/local.
   generic

         ./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags

## Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

Opciones de configuración de PDO_ODBC
Nombre | Por defecto | Cambiable | Historial de cambios
--- | --- | --- | ---
pdo_odbc.connection_pooling | "strict" | `INI_ALL` |
pdo_odbc.db2_instance_name | NULL | `INI_SYSTEM` | Esta característica obsoleta será eliminada con certeza en el futuro.

Para más detalles y definiciones de los modos de INI_*, vea Dónde se puede realizar un ajuste de configuración.

He aquí una breve explicación de las directivas de configuración.

`pdo_odbc.connection_pooling` string

  Si agrupar conexiones de ODBC. Se puede usar `"strict"`, `"relaxed"` o `"off"` (que es igual a `""`). El parámetro describe cómo de estricta debería ser el administrador de conexiones cuando coincidan los parámetros de conexión con conexiones existentes en la agrupación. `strict` es el valor predetermiando recomendado, y dará como resultado en el uso de conexiones almacenadas en caché solamente cuando todos los parámetros de conexión coincidan exactamente. `relaxed` dará como resultado el uso de conexiones almacenadas en caché cuando se utilicen parámetros de conexión similares. Esto puede resultar en el aumento del uso de la caché, con el riesgo de perder información de conexión entre (por ejemplo) hosts virtuales.

  Este ajuste solamente se puede cambiar desde el fichero php.ini, y afecta al proceso completo; cualquier otro módulo dentro del proceso que utilice las mismas bibliotecas de ODBC también se verá afectado, incluyendo la Extensión ODBC Unificada.

  Advertencia

  `relaxed` no debería usarse en servidores compartidos, por razones de seguridad.

  Sugerencia

  Deje este ajuste a la configuración `strict` predeterminada a menos que tenga una buena razón para cambiarlo.

`pdo_odbc.db2_instance_name` string

  Si se compila PDO_ODBC usando el sabor `db2`, este ajuste establece el valor de la variable de entorno DB2INSTANCE en sistemas operativos Linux y UNIX al nombre especificado de la instancia de DB2. También habilita PDO_ODBC para resolver la ubicación de las bibliotecas de DB2 y realizar conexiones catalogadas a bases de datos DB2.

  Este ajuste solamente se puede cambiar desde el fichero php.ini, y afecta al proceso completo; cualquier otro módulo dentro del proceso que utilice las mismas bibliotescas de ODBC también se verá afectado, incluyendo la Extensión ODBC Unificada.

  Este ajuste no tiene efecto en Windows.

## Tabla de contenidos

- DSN de PDO_ODBC — Conectarse a bases de datos de ODBC o de DB2