Le langage PHP dispose de nombreuses fonctions permettant de travailler sur des bases de données ODBC (Open DataBase Connectivity).

Une compilation de PHP avec un support iODBC disponible sur iODBC.org, UnixODBC ou encore sur OpenLink, permet d'utiliser cette librairie de fonction avec de nombreux gestionnaires de bases de données compatibles ODBC.

Fonction
Description
true | false = odbc_autocommit($id_connexion [, 0 | 1]);
active (1) ou désactive (0) le mode d'auto-validation.
= odbc_binmode($id_resultat, $mode);
modifie la gestion des colonnes de données binaires selon un mode donné.
Mode Description
ODBC_BINMODE_PASSTHRU représente le mode Passthru.
ODBC_BINMODE_RETURN retourne les données telles quelles.
ODBC_BINMODE_CONVERT retourne les données converties en caractères.
odbc_close($id_connexion);
ferme une connexion ODBC.
odbc_close_all();
ferme toutes les connexions ODBC.
true | false = odbc_commit($id_connexion);
valide une transaction ODBC.
$id_connexion = odbc_connect($DSN, $utilisateur, $mot_passe
[, $type_curseur]);
ouvre une connexion à une source de données.
Mode Description
SQL_CUR_USE_IF_NEEDED représente le mode Passthru.
SQL_CUR_USE_ODBC retourne les données telles quelles.
SQL_CUR_USE_DRIVER retourne les données converties en caractères.
SQL_CUR_DEFAULT retourne les données converties en caractères.
$chaine = odbc_cursor($id_resultat);
retourne le pointeur de la fiche courante (cursorname).
$chaine = odbc_do($id_connexion, $requete);
Synonyme de odbc_exec().
$code_erreur = odbc_error([$id_connexion]);
retourne le code de l'erreur.
$message = odbc_errormsg([$id_connexion]);
retourne le message de l'erreur.
$id_resultat | false = odbc_exec($id_connexion, $requete);
prépare et exécute une requête SQL puis retourne un identifiant de résultat.
true | false = odbc_execute($id_connexion [, $tab_parametres]);
exécute une requête SQL préparée par odbc_prepare.
$nb_champs | false = odbc_fetch_into($id_resultat
[, $num_enregistrement, $tab_resultats]);
retourne le nombre de champs de l'enregistrement spécifié et place ses valeurs dans le tableau de résultats.
true | false = odbc_fetch_row($id_resultat [, $num_enregistrement]);
lit un enregistrement spécifié.
$nom | false = odbc_field_name($id_resultat, $position_champ);
retourne le nom du champ désigné.
$num_champs | false = odbc_field_num($id_resultat, $nom_champ);
retourne le numéro du champ.
$type | false = odbc_field_type($id_resultat, $position_champ);
retourne le type de données d'un champ.
$longueur | false = odbc_field_len($id_resultat, $position_champ);
$longueur | false = odbc_field_precision($id_resultat, $position_champ);
retourne la longueur d'un champ.
$echelle = odbc_field_scale($id_resultat, $position_champ);
retourne l'échelle d'un champ.
true = odbc_free_result($id_resultat);
libère les ressources utilisées par un résultat.
$nombre = odbc_longreadlen($id_resultat [, $nb_octets]);
détermine le nombre d'octets pour des champs de type LONG et LONGVARBINARY.
$nb_champs = odbc_num_fields($id_resultat);
retourne le nombre de champs dans un résultat.
$id_connexion = odbc_pconnect($DSN, $utilisateur, $mot_passe
[, $type_curseur]);
ouvre une connexion persistante à une source de données.
$id_preparation = odbc_prepare($id_connexion, $requete);
prépare une requête pour une exécution par odbc_execute.
$nb_enregistrements = odbc_num_rows($id_resultat);
retourne le nombre d'enregistrements dans un résultat.
$valeur = odbc_result($id_resultat, $champ);
retourne la valeur d'un champ désigné par son nom ou sa position.
$nb_enregistrements | false = odbc_result_all($id_resultat [, $format]);
affiche le résultat sous la forme d'une table HTML et retourne le nombre d'enregistrements. L'argument $format est une chaîne de caractères définissant le format d'affichage des valeurs.
true | false = odbc_rollback($id_connexion);
annule une transaction.
$nombre = odbc_setoption($identifiant,
$num_fonction, $num_option, $num_param);
modifie les paramètres ODBC de la connexion ou d'un résultat de requête.
$id_resultat = odbc_tables(id_connexion
[, $qualificateur [, $proprietaire [, $nom [, $types]]]]);
liste les tables d'une source selon différents paramètres.
$id_resultat = odbc_tableprivileges($id_connexion
[, $qualificateur [, $proprietaire [, $nom]]]);
liste les tables et leurs privilèges selon différents paramètres.
$id_resultat = odbc_columns($id_connexion
[, $qualificateur [, $proprietaire [, $nom_table [, $nom_colonne]]]]);
liste les colonnes d'une table selon différents paramètres.
$id_resultat = odbc_columnprivileges($id_connexion
[, $qualificateur [, $proprietaire [, $nom_table [, $nom_colonne]]]]);
liste les colonnes et leurs droits associés selon différents paramètres.
$id_resultat = odbc_gettypeinfo($id_connexion [, $type_donnee]);
liste les types de données supportés par une source selon différents paramètres.
$id_resultat = odbc_primarykeys($id_connexion,
$qualificateur, $proprietaire, $nom_table);
liste les colonnes utilisées dans une clé primaire selon différents paramètres.
$id_resultat = odbc_foreignkeys($id_connexion,
$pk_qualificateur, $pk_proprietaire, $pk_nom_table,
$fk_qualificateur, $fk_proprietaire, $fk_nom_table);
liste les clés étrangères (fk) selon différents paramètres.
$id_resultat = odbc_procedures($id_connexion
[, $qualificateur [, $proprietaire [, $nom]]]);
liste les procédure stockées selon différents paramètres.
$id_resultat = odbc_procedurecolumns($id_connexion
[, $qualificateur [, $proprietaire [, $nom_procedure [, $nom_colonne]]]]);
liste les paramètres des procédures selon différents paramètres.
$id_resultat = odbc_specialcolumns(id_connexion, $qualificateur,
$proprietaire, $nom_table, $num_etendue, $num_annulable);
retourne l'ensemble optimal de champs permettant de définir uniquement un enregistrement dans une table.
$id_resultat = odbc_statistics($id_connexion, $qualificateur,
$proprietaire, $nom_table, $num_unique, $num_exactitude);
calcule des statistiques sur une table.
Exemple
<?php
  // Fichier : commun.inc
  function gestion_erreur($identifiant)
  {
    echo "Une erreur est survenue :<br>" 
            . odbc_error() . " : " . odbc_errormsg();
    odbc_close($identifiant);
    exit;
  }

  function affichage_base($identifiant)
  {
    $resultat = odbc_exec($identifiant, "select * from tbl_personnel");
    if (!$resultat) gestion_erreur($resultat);

    $nb_enregistrements = 0;
    $nb_champs = odbc_num_fields($resultat);

    echo '<table border="1"><tr>';
    for($i = 1; $i <= $nb_champs; $i++)
    {
      echo '<th>' . odbc_field_name($identifiant, $i) . '</th>';
    }
    echo '</tr><tr>';
    while(odbc_fetch_row($resultat))
    {
      for($i = 1; $i < $nb_champs; $i++)
      {
        echo '<td>' . odbc_result($resultat, $i) . '</td>';
      }
      $nb_enregistrements++;
    }

    echo '</tr><tr>'
           . '<td colspan="' . $nb_champs . '">' 
           . $nb_enregistrements . ' enregistrements</td>' 
           . '</tr></table>';
  }
?>

<?php
  // Fichier : traitement.php
  include ("commun.inc");

  function ajout_entree($tab_valeurs)
  {
    $i = 0;
    $nb = sizeof($tab_valeurs);
    $requete_sql = "Insert Into tbl_personnel (";
    while($cle = array_shift(array_keys($tab_valeurs)))
    {
      $fin = $i < $nb - 1 ? ", " : ") ";
      $requete_sql .= $cle . $fin;
      $i++;
    }
    $requete_sql = "Values ('";
    foreach($i = 0; $i < $tab_valeurs; $i++)
    {
      $fin = $i < $nb - 1 ? "', " : "')";
      $requete_sql .= "'" . $tab_valeur[$i] . $fin;
    }

    $resultat = odbc_exec($id_connexion, $requete_sql );
    if (!$resultat) gestion_erreur($resultat);

    return "<h3La mise à jour de la base de données a été réussie !</h3>";
  }

  $id_connexion = odbc_connect("serveur", 'utilisateur', 'mpoatsse');
  if (!$id_connexion) gestion_erreur($id_connexion);

  $informations = array("nom"=>$nom,
                      "prenom"=>$prenom,
                      "email"=>$email);

  echo ajout_entree($informations);
  affichage_base($id_connexion);

  odbc_close($id_connexion);
?>
<!-- Fichier : formulaire.php -->
<?php include ("commun.inc"); ?>
<html>
  <body>
  <h2>Enregistrements de la base de données<h2>
  <?php
      $id_connexion = odbc_connect("serveur", 'utilisateur', 'mpoatsse');
      if (!$id_connexion) gestion_erreur($id_connexion);

      affichage_base();

      odbc_close($id_connexion);
  ?>
  <h3>Ajout d'un enregistrement<h3>
  <form action="traitement.php" method="POST">
      <table border="0">
        <tr>
        <td>Nom</td>
        <td><input type="text" name="nom"></td>
        </tr>
        <tr>
        <td>Prénom</td>
        <td><input type="text" name="prenom"></td>
        </tr>
        <tr>
        <td>eMail</td>
        <td><input type="text" name="email"></td>
        </tr>
        <tr>
        <td></td>
        <td><input type="submit" name="soumettre" value="Soumettre"></td>
        </tr>
      </table>
  </form>
  </body>
</html>