Ajouter, modifier ou supprimer des données PHP/MySQL

Dans cet article nous allons étudié l’accès à la base de données MySQL. Nous allons voir comment se connecter et se déconnecter de la base de données et comment executer des requetes SELECT, UPDATE, DELETE et INSERT au sein des scripts PHP.

Il faut en prérequis avoir la structure de la table Personne suivante (dans cet article nous avons vu comment créer la table Personne):

Structure de la table Personne

Structure de la table Personne

Ainsi que ces données :

Données de la table Personne

Données de la table Personne

Pour se connecter et manipuler une base de données MySQL, PHP nous offre deux extensions par défaut : mysql_ et mysqli_.

Nous utiliserons l’extension mysqli_ tout au long de ce tutoriel parce qu’elle est plus récente (version 5 de PHP) et a quelques fonctionnalités supplémentaires.

Connexion

mysqli_connect() est la fonction permettant de se connecter à MySQL, elle prend en paramètres :

  • L’hôte : le nom ou l’adresse IP de l’hôte. Celui-ci correspond à “localhost” ou 127.0.0.1 si vous travaillez en local
  • L’utilisateur : le nom de l’utilisateur pour se connecter à la base de données. Si vous travaillez en local, celui-ci correspond à “root”.
  • Le mot de passe : le mot de passe associé à l’utilisateur. Celui-ci est vide par défaut.
  • Le nom de la base de données : le nom de votre base de données.
  • Le port : numéro du port pour se connecter au serveur MySQL. Celui-ci vaut 3306 par défaut (optionnel).

La fonction mysqli_connect() retourne false en cas d’erreur ou un objet mysqli contenant l’identifiant de connexion en cas de succès.

Exemple :

Explication des fonctions :

  • mysqli_get_host_info($base) : retourne des informations sur votre serveur
  • mysqli_connect_errno() : retourne le numéro de l’erreur en cas d’échec de connexion.
  • mysqli_connect_error() : retourne le message de l’erreur en cas d’échec de connexion

Apès execution, le résultat ci-dessous s’affiche :

Message de connexion à la base de données MySQL

Message de connexion à la base de données MySQL

Déconnexion

La fonction permettant de se déconnecter de MySQL est mysqli_close().

Exemple :

Il n’est pas obligatoire de fermer la connexion car PHP le fait automatiquement à la fin du script.

Lire, écrire, supprimer et mettre à jour des données

La fonction mysqli_query() permet d’exécuter une requête SQL, elle prend en paramètres :

  • L’objet de connexion : objet renvoyé par la fonction mysqli_connect().
  • La requête : la requête SQL à executer.

Cette fonction retourne false en cas d’échec et true ou un identifiant en cas de succès.

Lire des données

Pour afficher les données de la table Personnes, il faut utiliser la notion de fetch. Le fetch permet de lire la ligne courante et de se déplacer sur la ligne suivante.

La fonction mysqli_fetch_assoc() est l’une des fonctions permettant d’utiliser cette notion de fetch. Elle prend en paramètre le résultat renvoyé par la fonction mysqli_query() et retourne un tableau associatif ayant pour indice le nom de la colonne de la requête SQL.

Exemple, pour afficher le nom, prenom et age de la table Personne :

Résultat :

Affichage des données de la table Personne

Affichage des données de la table Personne

Il existe 3 autres fonctions suplémentaires permettant d’utiliser la notion de fetch:

mysqli_fetch_row() prend en paramètre le résultat renvoyé par la fonction mysqli_query() et retourne un tableau indexé ayant pour indice un compteur de 0 à n représentant les colonnes dans l’ordre ramenées par la requête.

mysqli_fetch_array() prend en paramètre supplémentaire une constante permettant de récupérer soit un tableau associatif, soit un tableau indexé, soit les deux à la fois.

  • MYSQLI_ASSOC : retourne un tableau associatif équivalent à mysqli_fetch_assoc().
  • MYSQLI_NUM : retourne un tableau indexé équivalent à mysqli_fetch_row().
  • MYSQLI_BOTH : retourne un tableau à la fois associatif et indexé.

mysqli_fetch_object() prend en paramètre le résultat renvoyé par la fonction mysqli_query() et retourne un objet avec un attribut par champ retourné par la requête. Cet attribut a pour nom et pour valeur respectivement celui et celle du champ.

Écrire des données

Pour écrire des données (insérer des données dans la base de données), il faut exécuter une requête de type INSERT. Pour cela, il faut utiliser la fonction mysqli_query(). Cette dernière prend en paramètres :

  • L’objet de connexion : objet renvoyé par la fonction mysqli_connect().
  • La requête : la requête SQL à executer.

Exemple, , pour insérer une personne nommée Lauren Brandon âgée de 57 ans :

Vous avez alors une nouvelle ligne dans la base de données :

Insertion d'une nouvelle Personne dans la base de données

Insertion d’une nouvelle Personne dans la base de données

l’Id_personne n’a pas été ajouté dans la requête Insert, parce qu’il est auto-incrémental. Pour récuperer le dernier ‘id donné automatiquement par la base de données, il existe la fonction mysqli_insert_id(). Cette dernière prend en paramètre l’objet de connexion et retourne le dernier identifiant auto-incrémental ajouté en base de données.

Exemple :

Supprimer des données

Pour supprimer des données, il faut exécuter une requête de type DELETE. Pour cela, PHP nous propose la fonction mysqli_query(). Cette fonction prend en paramètres :

  • L’objet de connexion : objet renvoyé par la fonction mysqli_connect().
  • La requête : la requête SQL.

Exemple, pour supprimer une personne dont le prenom est Brandon :

Résultat:

Suppression d'une Perssonne de la base de données

Suppression d’une Perssonne de la base de données

Pour connaître le nombre de lignes supprimées, il faut utiliser la fonction mysqli_affected_rows().

Mettre à jour des données

Pour modifier des données, il faut exécuter une requête de type UPDATE. Pour cela, il faut utiliser la fonction mysqli_query(). Cette fonction prend en paramètre :

  • L’objet de connexion : objet renvoyé par la fonction mysqli_connect().
  • La requête : la requête SQL.

Exemple, pour modifier la personne dont le nom est Audric en changeant son nom par Elodie et son âge de 26 à 30 :

Résultat :

Modifier le nom et l'age d'une Personne de la base de données

Modifier le nom et l’age d’une Personne de la base de données

Nous avons utilisé la fonction mysqli_affected_rows() pour compter le nombre de lignes modifiées par la requete. Cette fonction prend en paramètre le résultat renvoyé par la fonction mysqli_connect().

Laisser un commentaire