Nous continuons notre série à
propos des bases autres que MySQL avec lesquelles PHP peut travailler.
Après PostgreSQL et FireBird/InterBase,
nous abordons ici encore deux bases : Sybase
Adaptive Server et Microsoft
SQL Server.
Aborder ces deux bases dans un même
article n'est pas anodin : SQL Server a été créé
par Sybase pour UNIX en 1987, puis co-développé par
Sybase, Microsoft et Ashton-Tate à partir de 1988, pour son
port sur OS/2, puis NT. A partir de 1993, Microsoft et Sybase ont
chacun développé leur propre SQL Server, jusqu'à
ce que Sybase décide d'éviter la confusion en renommant
le sien Adaptive Server en 1995.
Leur histoire fait que ces deux bases ont beaucoup en commun, au
point que certaines fonctions PHP dédiées à
MS-SQL sont en fait des fonctions Sybase, renommées pour
la clarté du code. Etudier l'une et l'autre en même
temps semble donc naturel... Cela étant, les années
ayant passées, chacune s'est créé quelques
particularités (T-SQL
pour SQL Server, intégration Java poussée pour AS),
donc c'est au développeur d'utiliser la base qui réponde
le mieux à ses besoins.
Précisions
Lors de l'installation, il est recommandé d'avoir les configurations
suivantes...
...pour Sybase : avoir compilé PHP avec le module Sybase
Anywhere, qui permet la connexion à la base. Cependant,
les fonctions fournies par PHP (compilé correctement) devraient
être suffisantes pour un apprentissage.
...pour SQL Server sous système UNIX : avoir installé
FreeTDS, une
bibliothèque permettant d'utiliser ce SGBD sans pour autant
devoir passer par un système Windows.
Les
équivalences MySQL - Sybase/SQL Server dans PHP
Comme d'habitude, voici une courte table des équivalences
des principales fonctions
PHP de gestion de base de données. Sauf indication contraire,
vous pouvez renommer sybase_ en
mssql_ selon le SGBD utilisé
:
Fonctions
équivalentes
|
MySQL
|
Description
|
Equivalent
Sybase/SQL Server
|
mysql_create_db()
mysql_drop_db() |
Créé/détruit
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
|
sybase_query()
|
mysql_fetch_row()
mysql_fetch_array()
mysql_fetch_object()
mysql_fetch_assoc()
mysql_fetch_field()
|
Récupère
des résultats d'un requête
|
sybase_fetch_row()
sybase_fetch_assoc()
sybase_fetch_object()
sybase_fetch_assoc()
sybase_fetch_field()
|
mysql_error()
mysql_errno() |
Gestion
des erreurs de requête
|
sybase_get_last_message()
|
mysql_connect()
mysql_pconnect()
mysql_close() |
Lance/ferme
une connexion à la base
|
sybase_connect()
sybase_pconnect()
sybase_close()
|
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
|
sybase_num_rows()
sybase_num_fields()
|
mysql_free_result() |
Libère
la mémoire
|
sybase_free_result()
|
Comparativement, PHP supporte quelques fonctions
spécifiques de plus pour SQL Server que pour Sybase : par exemple, mssql_init(),
mssql_bind() et mssql_execute()
pour gérer les procédures stockées, ou encore msssql_next_result()
pour déplacer le pointeur vers le résultat suivant, ce qui peut
s'avérer pratiquer.
De son coté, Sybase dispose de sybase_unbuffered_query()
(requête non bloquante, à utiliser avec précaution),
de sybase_deadlock_retry_count()
(configure le nombre d'essais en cas de blocage) et de sybase_set_message_handler()
(configure le gestionnaire de messages).
En outre, les deux systèmes ont droit à des fonctions
dont ne dispose pas MySQL : *_min_error_severity()
et *_min_message_severity() (ainsi
que deux supplémentaire pour Sybase concernant le client
et le serveur), qui permettent de définir les niveaux de
sévérité à partir desquels la base réagira.
Application
L'utilisation simple de Sybase/SQL
Server est assez proche de celle de MySQL:
<?php
$hote = 'nomServeur';
$utilisateur = 'aspdotnet';
$passe ='c#>j2me';
$db = sybase_connect($hote, $utilisateur, $passe);
$requete = 'SELECT id,prix FROM livresZope';
$resultat = sybase_query($db, $requete);
while ($row = sybase_fetch_object($resultat))
{
?><?=$row->id . ": " $row->prix
. "<br>\n";?><?
}
sybase_free_result($resultat);
sybase_close($db);
?>
Il s'agit ensuite de maîtriser
les spécificités de chaque base...
Se lancer
Utiliser Sybase ou SQL Server avec PHP,
quelque soit le système d'exploitation, requiert de recompiler
PHP avec les extensions adéquates (expliquées sur
les pages de PHP.net : MS
SQL, Sybase).
Il existe un hack de phpMyAdmin pour Sybase : le bien-nommé
phpSybaseAdmin.
Encore en bêta, il peut néanmoins rendre quelques bons
services. A notre connaissance, il n'existe pas d'équivalent
pour SQL Server...
Sybase propose un
document de départ permettant de débuter l'utilisation
de leur base avec PHP.
La section MSDN du site de Microsoft propose une
page très complète sur l'utilisation de SQL Server,
malheureusement rarement en rapport avec PHP. On y trouvera cependant
quelques renseignements utiles, qu'il faudra transposer...
|