– PHP et les bases de données –

PHP ne servirait techniquement pas à grand chose si il n’était pas possible de le lier à une ou plusieurs bases de données. Quel que soit le SGBD (Système de Gestion des Bases de Données), il est possible de lier PHP au SGBD, soit à partir de commandes SGBD-spécifiques (nous allonrs voir les commandes avec MySQL), soit à partir d’une classe générique permettant de se connecter à n’importe quel SGBD indépendamment de sa structure (PDO).

L’utilisation de l’accès aux bases de données se fait toujours de la même manière (il faut se rappeler que toutes les pages sont indépendantes les unes des autres, donc à chaque appel d’une nouvelle page (hors include et require) il faudra faire l’appel à la connexion):

  • connexion à la base en début de page
  • puis pour chaque requête
    • exécution de la requête
    • si besoin récupération de la requête
    • libération de l’espace mémoire alloué à la requête

Connexion au serveur

Pour se connecter au serveur de bases de données, il faut spécifier:

  • Un nom de serveur
  • Un nom d’utilisateur
  • Un mot de passe
  • Un nom de base de données

mysqli_connect($server,$user,$password,$db): permet de se connecter au serveur $server en tant qu’utilisateur $user avec le mot de passe $password, retourne l’identifiant de connexion si succès, FALSE sinon.

Si ces arguments manquent, les valeurs par défaut du fichier de configuration php.ini seront utilisées.

mysqli_select_db($id,$base): permet de choisir la base $base, sur la connexion $id. Elle retourne TRUE en cas de succès, sinon FALSE.

mysqli_close($id): permet de fermer la connexion à un serveur de bases de données, l’argument optionnel $id est l’identifiant de session retourné à l’ouverture de la connexion. Toutes les connexions aux serveurs de bases de données sont automatiquement fermées à la fin de l’exécution du script qui les aura ouvertes.

Il est possible d’utiliser les méthodes objets également:

new mysqli($hôte,$login,$motDePasse,$base): permet de se connecter et de sélectionner une base

Connexion au serveur

Pour se connecter au serveur de bases de données, il faut spécifier:

  • Un nom de serveur
  • Un nom d’utilisateur
  • Un mot de passe
  • Un nom de base de données

mysqli_connect($server,$user,$password,$db): permet de se connecter au serveur $server en tant qu’utilisateur $user avec le mot de passe $password, retourne l’identifiant de connexion si succès, FALSE sinon.

Si ces arguments manquent, les valeurs par défaut du fichier de configuration php.ini seront utilisées.

mysqli_select_db($id,$base): permet de choisir la base $base, sur la connexion $id. Elle retourne TRUE en cas de succès, sinon FALSE.

mysqli_close($id): permet de fermer la connexion à un serveur de bases de données, l’argument optionnel $id est l’identifiant de session retourné à l’ouverture de la connexion. Toutes les connexions aux serveurs de bases de données sont automatiquement fermées à la fin de l’exécution du script qui les aura ouvertes.

Il est possible d’utiliser les méthodes objets également:

new mysqli($hôte,$login,$motDePasse,$base): permet de se connecter et de sélectionner une base

Interrogation

Pour toute requête, on utilisera la méthode mysqli_query. Cele-ci retourne true pour les requêtes de création, modification, suppression réussies, ou un objet mysqli_result pour les requêtes de sélection. Une requête fausse (attention fausse veut dire que la syntaxe SQL est foireuse, pas qu’il n’y a pas de résultats), la méthode renverra false.

mysqli_query($str): prend pour paramètre une chaîne de caractères qui contient la requête écrite en SQL

Extraction des données

Il existe 3 méthodes pour extraire les données d’une requête de type select.

mysqli_fetch_row($result): retourne une ligne de résultat (un tuple) sous la forme d’un tableau. Les éléments du tableau étant les valeurs des attributs de la ligne. Retourne FALSE s’il n’y a plus aucune ligne.

mysqli_fetch_array($result) et mysqli_fetch_assoc($result): retournent un tableau associatif. Les clés étant les noms des attributs et leurs valeurs associées leurs valeurs respectives. Retourne FALSE s’il n’y a plus aucune ligne.

mysqli_fetch_object($result): retourne un objet. Les attributs de l’objet correspondent à ceux de la ligne de résultat. Et les valeurs des attributs de l’objet correspondent à ceux de la ligne de résultat. Retourne FALSE s’il n’y a plus aucune ligne.

mysqli_fetch_row (méthode procédurale)

mysqli_fetch_row (méthode objet)

mysqli_fetch_array (méthode procédurale)

mysqli_fetch_array (méthode objet)

mysqli_fetch_object (méthode procédurale)

mysqli_fetch_object (méthode objet)

Statistiques de requêtes

Il est possible de savoir combien de lignes(enregistrements) ont été affectés par une requête de type d’insertion, modification, suppression.

mysqli_affected_rows: retourne le nombre de lignes modifiées par la dernière requête INSERT, UPDATE ou DELETE effectuée sur le serveur

Il est également possible de savoir le nombre de lignes affectées par une requête de sélection.

mysqli_num_rows: retourne le nombre de lignes retournées par la dernière requête SELECT dont on connaît l’identifiant de résultat $result

mysqli_num_fields: retourne le nombre d’attributs des tuples du résultat d’une requête

mysqli_fetch_field: retourne le nombre d’attributs des tuples du résultat d’une requête.

mysqli_fetch_fields: retourne le nom des attributs de la requête.

affected_rows

num_rows

num_fields

fetch_field

fetch_fields

Récupération du dernier id ajouté

mysqli_insert_id: retourne la valeur de la clé du dernier élément inséré en base

Exemple complet

L’exemple suivant permet de lister les informations d’une table sans connaître les noms des attributs. Elle combine les méthodes vues précédemment.

méthode procédurale

méthode objet