Rappel : si vous travaillez sur votre ordinateur personnel, vous devez avoir créer la base de données de test pour que les exemples puissent être utilisés.

L'extension mysqli permet à PHP de communiquer avec le serveur MySQL. Les fonctions sont écrites spécifiquement pour MySQL, garantissant adaptation et rapidité. Nous n'avons pas à tenir compte des différents systèmes sur lesquels peuvent être installées les applications, puisque l'API s'en charge à notre place.

Quelque soient le langage et la base de données utilisés, le traitement d'une page dynamique se fait toujours de la même façon :

4 phases de traitement

La connexion au serveur MySQL se fait très facilement avec la fonction mysqli_connect() à laquelle on va passer 4 paramètres :

- l'adresse du serveur de base de données sur le réseau,
- un nom d'utilisateur,
- le mot de passe de cet utilisateur
- Le nom de la base de données avec laquelle on veut travailler

La fonction renvoie une référence sur l'objet qui représente la connexion au serveur MySQL (de type mysqli) en cas de succès, ou sinon FALSE. Cette référence doit être gardée précieusement car il sera nécessaire de la passer en paramètre à certaines autres fonctions mysqli, en particulier à la fonction mysqli_query() qui permet d'envoyer des requêtes SQL au serveur.

L'exemple suivant effecture une connexion au serveur MySQL, sélectionne notre base de tests, récupère le nombre de livres dans la table livres et l'affiche.

Exemple : nombre de livres
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Nombre de livres'); //-- Connexion -------------------------------------- $bd = mysqli_connect('localhost', 'tuto_user', 'tuto_pass', 'php_tuto'); //-- Requête ---------------------------------------- $sql = 'SELECT count(*) FROM livres'; $r = mysqli_query($bd, $sql); //-- Traitement ------------------------------------- $enr = mysqli_fetch_row($r); echo 'Il y a ', $enr[0], ' livres dans notre base'; //- Libération de la mémoire associé au résultat de la requête mysqli_free_result($r); //-- Déconnexion ------------------------------------ mysqli_close($bd); htmlFin(); ?>

La connexion avec le serveur de base de données est établie avec la fonction mysqli_connect() en lui transmettant les arguments 'localhost', 'tuto_user', 'tuto_pass' et 'php_tuto'.

- Il faut transmettre en premier argument l'adresse IP ou le nom d'hôte de la machine qui héberge le serveur MySQL.
  Quand les logiciels 'serveur Web' et 'serveur MySQL' sont hébergés sur la même machine, on utilise le nom d'hôte 'localhost' qui désigne la machine locale.
- Le nom d'utilisateur est 'tuto_user'. Certains droits spécifiques lui sont accordés. Dans MySQL, l'utilisateur 'root' est un utilisateur privilégié qui possèdent tous les droits, comme par exemple de supprimer une base, des tables, ou de modifier les structures. Ne travaillez jamais avec l'utilisateur 'root' car n'importe quel internaute aurait alors tous les droits sur le serveur MySQL et toutes les bases de données hébergées.
- Le mot de passe est 'tuto_pass'. Toujours pour des raisons de sécurité, donnez toujours des mots de passe à vos utilisateurs.
- 'php_tuto' est le nom de la base de données utilisée pour toutes les requêtes qui suivront la connexion.

Quand un script PHP envoie plusieurs requêtes au serveur MySQL, il ne doit se connecter au serveur MySQL qu'une seule fois. En effet la connexion au serveur MySQL est une opération relativement "couteuse" en terme d'utilisation des ressources système. Donc, il convient de respecter cette règle pour ne pas augmenter la charge du système et détériorer les temps de réponse de votre application.