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