Accès au bases de données

Principe

Php s’interface avec un grand nombre de bases de données parmi lesquelles dBase, Empress, FilePro, Informix, Interbase, mSQL, MySQL, Microsoft SQL Server, Oracle, PostgreSQL, Solid, Sybase, Velocis, Unix dbm. Si une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, que l'on peut alors voir comme un SGBD spécifique (avec des performances significativement inférieure à celles obtenues par une connexion directe).. 

Connexion à la base de données

La première étape consiste à déclarer les variables qui vont permettre la connexion à la base de données (ce sont les paramètres des fonctions de connexion à la base). Ces variables sont:

·         $user : Le nom d'utilisateur

·         $passwd : Le mot de passe

·         $host : L'hôte (ordinateur sur lequel le SGBD est installé)

·         $bdd : Le nom de la base de données

Ces variables sont en fait des paramètres de la fonction permettant la connexion à la base de données. Il est donc possible de passer les valeurs de ces variables directement dans chaque fonction permettant la connexion, mais cela devient vite gênant lors d'un changement de mot de passe par exemple.

Connexion directe

<?

    $host = "serveurbd.domaine.com";
    $user = "etd";
    $password = "etd";

    $bd = "Bibli";
    // connexion à une base de données mysql

    $connect = mysql_connect($host,$user,$password) or die ("raté");

    $connect = mysql_select_db($bdd) or die ("Impossible");

    // connexion à une base de données MS SQL Server

    $connect = mssql_connect($host,$user,$password);

    $connect = mssql_select_db($bdd) or die ("Impossible");

?>

Comme ce code le montre, une fonction différente est utilisée pour la connexion selon le système de gestion de base de données utilisé.

Une connexion à une base de donnée Oracle est significativement plus compliquée et on se contentera ici de renvoyer au manuel en ligne et à ses commentaires.

Connexion à l'aide d'une source de données ODBC

<? $host = "Bibli";
    $user = "etd";
    $password = "etd"; 
    $conn = odbc_connect($host,$user,$password) or die ("raté");
?>

Le code qui précède suppose que l'on a créé sur la machine qui abrite le serveur Web un lien ODBC système de nom Bibli vers la source de données choisi (dont il convient naturellement de posséder le driver). Dans ce qui suit, nous nous concentrerons sur une connexion ODBC. 

Remarque : Dans les deux cas, il sera raisonnable de créer un fichier contenant la chaîne de connexion (et souvent d'autres fonctions auxiliaires) que l'on inclura en tête de fichier grâce à une ligne du type

<!--#include file="../../Common/include.inc"-->

La page en lien décrit pas à pas les étapes de la création d'une source de données ODBC.

Accès aux données

Selon le SGBD utilisé et le type de connexion, php va utiliser diverses fonctions d'accès aux données de nom odbc_exec (comme dans l'exemple ci-dessous) ou  mysql_query et mssql_query pour mySQL et Microsoft SQL SERVER. 

Le résultat de l'appel à cette fonction est stocké dans une variable, que l'on nomme par exemple $result. Cette variable contient l'ensemble des enregistrements et il faut utiliser la fonction xxxxx_fetch_row(), qui découpe les lignes de résultat en colonnes et les affecte à une variable tableau dans l'ordre où elles arrivent.

Le code qui suit est tout à fait limpide et s'exécute sans problème :

<html>
<head><title>Exemple</title></head>
<body>
<?// Connexion odbc
    $host = "Bibli";
    $user = "etd";
    $password = "etd"; 
    $conn = odbc_connect($host,$user,$password) or die ("raté");
    $query = "Select Nom from auteur order by nom";
    $result = odbc_exec($conn,$query);
    // affichage d'un seul nom

    $nom = odbc_result($result,1);
    echo $nom;
    // boucle de lecture
    while (odbc_fetch_row($result)) {
        $nom = odbc_result($result,1);
        echo "<p> Nom : ";
        echo $nom;
    }
   // Deconnexion de la base de donnees

odbc_close($conn);

?>

</body>

</html>

Remarque : Bien que souvent associé à php (car comme lui libre et gratuit) comme exemple de système de gestion de bases de données permettant de développer des pages actives côté serveur, mySQL, dans l'état actuel de son développement ne mérite pas le nom de Système de Gestion de Bases de Données, car il ignore un grand des caractéristiques de ce type de produit (gestion de transactions, journalisation) qui leur permettent d'offrir d'importantes garanties de résistance aux pannes. Il ne saurait donc remplacer des produits comme Oracle, Informix ou SQL Server.

codeSa simplification lui confère cependant des avantages en termes de rapidité qui peuvent rendre son utilisation intéressante pour une application qui se contente de publier des données