# Funciones del controlador PDO ODBC y DB2 (PDO_ODBC)

## Introducción

PDO_ODBC es un controlador que implementa la PHP Data Objects (PDO) para permitir el acceso de PHP a las bases de datos mediante los controladores de ODBC o mediante la biblioteca de interfaz IBM DB2 Call Level (DB2 CLI). PDO_ODBC actualmente soporta tres "sabores" diferentes de los controladores de bases de datos:

ibm-db2

  Permite el acceso a IBM DB2 Universal Database, Cloudscape y Apache Derby Server utilizando el cliente gratuito DB2 express-C.

unixODBC

  Permite el acceso a los servidores de bases de datos mediante el controlador de gestión unixODBC y las bases de datos poseídas por los controladores ODBC.

generic

  Ofrece una opción de compilación para los controladores de gestión ODBC que no son explícitamente soportados por PDO_ODBC.

En Windows, php_pdo_odbc.dll debe ser activado como extensión en php.ini. Está vinculado con el Windows ODBC Driver Manager, por lo que PHP puede conectarse a cualquier base de datos catalogada como un System DSN.

## Instalación

PDO_ODBC en sistemas UNIX

1. PDO_ODBC está incluido en las fuentes de PHP. Puede compilarse la extensión PDO_ODBC ya sea de forma estática o como módulo compartido utilizando los siguientes comandos configure.

   ibm_db2

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

     Para construir PDO_ODBC con el sabor ibm-db2, deben haberse instalado previamente los encabezados de desarrollo de la aplicación DB2 en la misma máquina donde se compila PDO_ODBC. Los encabezados de desarrollo de la aplicación DB2 son una opción de instalación en los servidores DB2 y también están disponibles como parte de DB2 Application Development Client gratuitamente disponibles para descarga desde el IBM developerWorks » sitio.

     Si no se especifica una ubicación para las bibliotecas y los encabezados de DB2 en el comando configure, PDO_ODBC tomará por omisión /home/db2inst1/sqllib.

   unixODBC

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

     Si no se especifica una ubicación para las bibliotecas y los encabezados de unixODBC en el comando configure, PDO_ODBC tomará por omisión /usr/local.
   generic

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

## Constantes predefinidas

Las constantes a continuación son definidas por este controlador y solo estarán disponibles cuando la extensión haya sido compilada en PHP o cargada dinámicamente del motor de ejecución. Además, estas constantes específicas del controlador deberían ser usadas solo si se usa este controlador. Usar atributos específicos de un controlador con otro controlador podría causar un comportamiento inesperado. PDO::getAttribute() podría ser usado para obtener el atributo `PDO::ATTR_DRIVER_NAME` para verificar el controlador, si su código puede funcionar en múltiples controladores.

`PDO_ODBC_TYPE` (string)
  Describe la biblioteca ODBC enlazada con la extensión PDO_ODBC. Los valores posibles incluyen `unixODBC`, `iODBC` o `generic`.

Advertencia

Las constantes listadas a continuación están OBSOLETAS a partir de PHP 8.5.0. Utilice las constantes correspondientes de Pdo\Odbc en su lugar.

`PDO::ODBC_ATTR_USE_CURSOR_LIBRARY` (int)
  Alias de `Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY`.
`PDO::ODBC_SQL_USE_IF_NEEDED` (int)
  Alias de `Pdo\Odbc::SQL_USE_IF_NEEDED`.
`PDO::ODBC_SQL_USE_DRIVER` (int)
  Alias de `Pdo\Odbc::SQL_USE_DRIVER`.
`PDO::ODBC_SQL_USE_ODBC` (int)
  Alias de `Pdo\Odbc::SQL_USE_ODBC`.
`PDO::ODBC_ATTR_ASSUME_UTF8` (bool)
  Alias de `Pdo\Odbc::ATTR_ASSUME_UTF8`.

## Configuración en tiempo de ejecución

El comportamiento de estas funciones es afectado por la configuración en el archivo 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 funcionalidad obsoleta será ciertamente eliminada en el futuro.

Para más detalles sobre los modos INI_*, refiérase a Dónde una directiva de configuración puede ser modificada.

Aquí hay una aclaración sobre el uso 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

- PDO_ODBC DSN — Conexión a bases de datos ODBC o DB2

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open