TUTORIELS 
PHP et les SGBD (2) : InterBase/FireBird
Seconde partie de notre série explorant les alternatives à MySQL lors d'un développement de site PHP.  (9 octobre 2003)
 
Discutez en sur les forums
Après avoir abordé succinctement l'association PostgreSQL et PHP dans notre article précédent, nous plongeons ici plus en profondeur, parmi les SGBD moins emblématiques.
C'est aujourd'hui le tour de InterBase, aussi connue sous le nom de FireBird ou FireBirdSQL.


Présentation
A l'origine un petit SGBD développé vers 1986 par d'anciens ingénieurs de DEC, InterBase (IB) se retrouve, après quelques rachats successifs, dans le giron de Borland, éditeur de Turbo-Pascal, Delphi et autres outils majeurs, en 1991. En pleine restructuration, Inprise/Borland décide d'ouvrir le code d'InterBase début 2000, et six mois plus tard, un fork est créé au nom de FireBird. La communauté de IB, menée par Ann Harrison, l'un des créateurs du SGBD d'origine, travaille depuis à constamment améliorer le produit, notamment au travers de la société IBPhoenix.
Même si les deux SGBD sont pratiquement compatibles à 100%, InterBase est commerciale, avec FireBird comme version Open Source.

Quelques détails
A l'instar de PostgreSQL, et au contraire de MySQL, InterBase/FireBird reconnaît les procédures stockées, les déclencheurs, les vues et le évènements. De plus, le dialecte SQL utilisé par IB/F est souvent plus proche de la norme SQL-92 que celui de MySQL.
En quelque sorte, PostegreSQL et InterBase/Firebird (dans leurs versions 6 et 1.x, en tout cas) sont assez proches tant en fonctionnalités qu'en capacités.

Les équivalences MySQL - InterBase dans PHP
Voici une courte table des équivalences des principales fonct
ions PHP de gestion de base de données :

Fonctions équivalentes
MySQL
Description
Equivalent InterBase
mysql_create_db()
mysql_drop_db()
Création/destruction d'une base de données
Aucun : se fait par l'intermédiaire de requêtes SQL.
mysql_query()
mysql_db_query()
Lance une requête
ibase_query()
ibase_execute()
mysql_fetch_row()
mysql_fetch_array()
mysql_fetch_object()
Récupération des résultats d'un requête
ibase_fetch_row()
ibase_fetch_assoc()
ibase_fetch_object()
mysql_error()
mysql_errno()
Gestion des erreurs de requête
ibase_errmsg()
 
mysql_connect()
mysql_pconnect()
Lancement d'une connexion à la base
ibase_connect()
ibase_pconnect()
mysql_insert_id()
Renvoi l'identifiant de la dernière requête
aucune : requêtes SQL
mysql_num_rows()
mysql_num_fields()
Renvoi le nombre de ligne ou de champ d'un résultat

ibase_num_fields()

On constate vite que le support de PHP pour InterBase/FireBird est largement moindre que celui pour MySQL, et même pour PostgreSQL : là où MySQL dispose de fonctions toutes-faites permettant de lancer rapidement une action précise, les utilisateurs de IB/F doivent le plus souvent passer par des requêtes SQL... ou se concocter leurs propres fonctions.

Application
Sous-requête :

SELECT * FROM ville v
  WHERE EXISTS
    (SELECT * FROM region r
      WHERE r.code=v.code
      AND r.pays='France')

Comme pour PostgreSQL, l'apprentissage de la norme SQL-92/99 permettra de tirer meilleur parti des capacité du SGBD.

Exemple de code:

<?php
  $hote = '127.0.0.1:/db/site.GDB';
  $utilisateur = 'gargamel';
  $passe ='jedetestelesschtroumpfs';
  $db = ibase_connect($hote, $utilisateur, $passe);
  $requete = 'SELECT id,nom FROM schtroumpfs';
  $resultat = ibase_query($db, $requete);
  while ($row = ibase_fetch_object($resultat))
    {
    ?><?=$row->id . ": " $row->nom . "<br>\n";?><?
    }
  ibase_free_result($resultat);
  ibase_close($db);
?>

Rien de bien déroutant donc pour l'utilisateur habitué à manipuler des données avec PHP/MySQL.

Se lancer
Popularité moindre oblige, il n'existe pas ici non plus d'installateur "tout fait" (à notre connaissance). Il vous faudra donc installer vous-même InterBase ou FireBird. L'équivalent de phpMyAdmin dans le monde InterBase est ibWebAdmin.

Le site IBPhoenix, promoteur de FireBird, propose une série d'articles abordant l'usage de FireBird dans différentes configurations (pas seulement PHP), ce qui vous permettra de mettre rapidement le pied à l'étrier.

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page