# Fonctions du pilote PDO ODBC et DB2 (PDO_ODBC)

## Introduction

PDO_ODBC est un pilote qui implémente l'interface de PHP Data Objects (PDO) pour autoriser l'accès de PHP aux bases de données par les pilotes de ODBC ou par la bibliothèque d'interface IBM DB2 Call Level (DB2 CLI). PDO_ODBC supporte actuellement trois "saveurs" différentes des pilotes de bases de données :

ibm-db2

  Supporte l'accès à `IBM DB2 Universal Database`, Cloudscape et Apache Derby Server à l'aide du client gratuit DB2 express-C.

unixODBC

  Supporte l'accès aux serveurs de base de données à l'aide du pilote de gestion unixODBC et les bases de données possédées par les pilotes ODBC.

generic

  Offre une option de compilation pour les pilotes de gestion ODBC qui ne sont pas explicitement supportés par PDO_ODBC.

Sur Windows, php_pdo_odbc.dll doit être activé en tant qu'extension dans php.ini. Il est lié avec le Windows ODBC Driver Manager, c'est pourquoi PHP peut se connecter à n'importe quelle base de données cataloguée comme étant un System DSN.

## Installation

PDO_ODBC sur les systèmes UNIX

1. PDO_ODBC est inclus dans les sources de PHP. Vous pouvez compiler l'extension PDO_ODBC soit en statique ou en module partagé en utilisant les commandes configure suivantes.

   ibm_db2

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

     Pour construire PDO_ODBC avec la saveur ibm-db2, vous devez avoir précédemment installé les en-têtes de développement de l'application de DB2 sur la même machine sur laquelle vous compilez PDO_ODBC. Les en-têtes de développement de l'application DB2 sont une option d'installation dans les serveurs DB2 et sont aussi disponibles en tant que `DB2 Application Development Client` gratuitement disponibles pour téléchargement à partir du » site. `IBM developerWorks`.

     Si vous ne spécifiez pas d'emplacement pour les bibliothèques et les en-têtes de DB2 à la commande configure, PDO_ODBC prendra par défaut /home/db2inst1/sqllib.

   unixODBC

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

     Si vous ne spécifiez pas d'emplacement pour les bibliothèques et les en-têtes de unixODBC à la commande configure, PDO_ODBC prendra par défaut /usr/local.
   generic

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

## Constantes pré-définies

Les constantes ci-dessous sont définies par ce pilote et seront seulement disponibles lorsque l'extension aura été compilée dans PHP ou chargée dynamiquement du moteur d'exécution. De plus, ces constantes spécifiques au pilote devraient être utilisées seulement si vous utilisez ce pilote. En utilisant les attributs spécifiques à un pilote avec un autre pilote pourrait causer un comportement inattendu. PDO::getAttribute() pourrait être utilisé pour obtenir l'attribut `PDO::ATTR_DRIVER_NAME` pour vérifier le pilote, si votre code peut fonctionner sur des pilotes multiples.

`PDO_ODBC_TYPE` (string)

`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`.

## Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Options de configuration PDO_ODBC
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
pdo_odbc.connection_pooling | "strict" | `INI_ALL` |
pdo_odbc.db2_instance_name | `null` | `INI_SYSTEM` | Cette fonctionnalité obsolète sera certainement supprimée dans le futur.

Pour plus de détails sur les modes INI_*, reportez-vous à Où une directive de configuration peut être modifiée.

Voici un éclaircissement sur l'utilisation des directives de configuration.

`pdo_odbc.connection_pooling` string

  Pour mettre en commun les connexions ODBC. Peut être `"strict"`, `"relaxed"` ou `"off"` (égal à `""`). Le paramètre décrit comment la gestion de la connexion stricte devrait être lorsque les paramètres de connexion se ressemblent pour des connexions mises en commun. `strict` est la valeur par défaut recommandée et permettra l'utilisation des connexions en cache lorsque des paramètres de connexion similaires sont utilisés. `relaxed` permettra d'utiliser des connexions mises en cache lorsque des paramètres de connexion similaire seront utilisés. Cela peut augmenter l'utilisation du cache au risque de noyer les informations de connexion entre (par exemple) des serveurs virtuels.

  Cette configuration peut seulement être changé à partir du fichier php.ini et affecte le processus entier; n'importe quels autres modules chargé dans le processus qui utilisent les bibliothèques ODBC sera aussi affecté, en incluant l'extension unifié ODBC.

  Avertissement

  `relaxed` ne devrait pas être utilisé sur les serveurs partagés, pour des raisons de sécurité.

  Astuce

  Laissez cette configuration à la valeur par défaut `strict` à moins que vous ayez une bonne raison pour la changer.

`pdo_odbc.db2_instance_name` string

  Si vous compilez PDO_ODBC en utilisant `db2`, cette configuration fixe la valeur de la variable d'environnement DB2INSTANCE sur les systèmes d'exploitation Linux et UNIX au nom spécifié de l'instance DB2. Ceci permet à PDO_ODBC de résoudre le chemin des bibliothèques DB2 et de faire des connexions cataloguées aux bases de données DB2.

  Cette configuration peut seulement être changée à partir du fichier php.ini et affecte le processus entier; n'importe quels autres modules chargés dans le processus qui utilisent les même bibliothèques ODBC seront aussi affectés, incluant l'extension unifiée ODBC.

  Cette configuration n'a aucun effet sur Windows.

## Sommaire

- PDO_ODBC DSN — Connexion aux bases de données ODBC ou DB2