Vous êtes sur la page 1sur 23

Chapitre 9

Gestion de base de données


(PHP/MySQL)
I. Introduction
❑ Avec PHP, vous pouvez vous connecter et manipuler des bases de données.
❑ MySQL est le système de base de données le plus populaire utilisé avec PHP.
❑ MySQL est un système de base de données utilisé sur le web.
❑ MySQL est un système de base de données qui s'exécute sur un serveur.
❑ MySQL est idéal pour les petites et grandes applications.
❑ MySQL est très rapide, fiable et facile à utiliser.
❑ MySQL utilise le SQL standard.
❑ MySQL se compile sur un certain nombre de plateformes.

❑ MySQL est développé, distribué et pris en charge par Oracle Corporation.

19/02/2024 2
I. Introduction
❑ Les données d'une base de données MySQL sont stockées dans des tables. Une table
est une collection de données liées, et elle se compose de colonnes et de lignes.

❑ Les bases de données sont utiles pour stocker des informations de manière
catégorique. Une entreprise peut avoir une base de données avec les tables
suivantes:
❖ Des employés
❖ Des produits
❖ Les clients
❖ Commandes

19/02/2024 3
II. MySQL & MySQLi & PDO
PHP 5 et versions ultérieures peuvent fonctionner avec une base de données MySQL
en utilisant:
❑ MySQL.
❑ Extension MySQLi (le "i" signifie " improved " amélioré) :
❖ MySQLi (Version procédurale).
❖ MySQLi (Orienté objet ).

❑ PDO (PHP Data Objects): (Orienté objet).

Remarque :
PDO fonctionnera sur plusieurs systèmes de bases de données, MySQLi ne
fonctionnera qu'avec les bases de données MySQL.
19/02/2024 4
II. MySQL & MySQLi & PDO
D'une manière générale l'accès à une base de données se réalise en 3 étapes:

❑ La connexion

❑ La requête SQL

❑ La déconnexion

19/02/2024 5
III. Ouverture d’une connexion à MySQL
MySQLi procédural:
$conn= mysqli_connect($servername, $username, $password, [$bd]);
Exemple 1 : or die()
vérifier si une connexion se fait bien avant de continuer à travailler avec une base de données.
< meta charset="utf8">
<?php
$servername = 'localhost'; $username = 'root'; $password = '';
//On établit la connexion
$conn=mysqli_connect($servername,$username, $password) or
die('Erreur : ' .mysqli_connect_error());
//Fermeture de la connexion
mysqli_close($conn);
?>
19/02/2024 6
V. Création d’une base de données MySQLi procédural
Exemple 2 : $sql="CREATE DATABASE dbmysql";
< meta charset="utf8"> $req=mysqli_query($conn,$sql);
<?php if($req)
$servername = 'localhost'; {
$username = 'root'; echo 'Base de données créée
$password = ''; correctement';
//On établit la connexion }else{
$conn=mysqli_connect($servernam echo 'Erreur lors de la
, $username, $password); création de la BD
//On vérifie la connexion '.mysqli_error($conn);
if(!$conn){ }
die('Erreur :' //Fermeture de la connexion
.mysqli_connect_error()); mysqli_close($conn);
} ?>

19/02/2024 7
VI. Création d’une table dans la base MySQLi procédurale
< meta charset="utf8"> $sql = "CREATE TABLE personne(
<?php Id INT UNSIGNED AUTO_INCREMENT
$servername = 'localhost'; PRIMARY KEY,
$username = 'root'; Nom VARCHAR(30),
$password = ''; Prenom VARCHAR(30),
$bd = 'dbmysql'; Email VARCHAR(70) NOT NULL,
//On établit la connexion Ville VARCHAR(30))";
$conn = if(mysqli_query($conn,$sql)){
mysqli_connect($servername, echo 'Table créée correctement';
$username, $password,$bd); }else{
//On vérifie la connexion echo 'Erreur lors de la création
if(!$conn){ de la table'.mysqli_error($conn);
die('Erreur : ' }
.mysqli_connect_error()); mysqli_close($conn);
} ?>
19/02/2024 8
VII. Insérer des données dans MySQL
<?php $sql = "INSERT INTO personne(Nom,
$servername = 'localhost'; Prenom,Email,Ville) VALUES
$username = 'root'; ('Zaaraoui','Hiham','hicham@gmail.co
$password = ''; m','Taza')";
$bd = 'dbmysql'; if(mysqli_query($conn, $sql)) {
// Créer une connexion echo " Nouvel enregistrement créé
$conn = avec succès";
mysqli_connect($servername, } else {
$username, $password, $bd); echo "Erreur: ".mysqli_error($conn);
// Vérifier la connexion }
if (!$conn) { mysqli_close($conn);
die(" La connexion a échoué: ?>
".
mysqli_connect_error());
}

19/02/2024 9
VII. Insérer des données dans MySQL
mysqli_insert_id(mysqli $mysql): int|string

mysql est un identifiant de lien retourné par la fonction mysqli_connect() ou


par la fonction mysqli_init()

Cette fonction retourne l'ID généré par une requête INSERT ou UPDATE sur une
table avec une colonne ayant l'attribut AUTO_INCREMENT. Dans le cas des
requêtes multilignes INSERT, ceci retourne la première valeur automatiquement
généré et qui a été inséré avec succès.

Remarque :
Si aucune instruction INSERT ou UPDATE n'a été envoyé grâce à cette connexion,
ou si la table modifié ne possède pas de colonne avec l'attribut
AUTO_INCREMENT, cette fonction retournera zéro.
19/02/2024 10
VIII. Sélection des données avec MySQLi
mysqli_num_rows($req)
C’est une fonction utilisée pour renvoyer le nombre de lignes présentes dans le
résultat. Il est généralement utilisé pour vérifier si des données sont présentes dans
la base de données ou non.
Cette fonction accepte un seul paramètre $req. Il s'agit d’un paramètre obligatoire
et représente l'ensemble de résultats renvoyé par une requête d'extraction dans
MySQL.

mysqli_fetch_row($req) mysqli_fetch_assoc($req)

Retourne un tableau indicée dont Retourne un tableau associatif dont


les indices sont les numéros de les clés sont les noms des colonnes
colonnes de la table interrogée. de la table interrogée.

19/02/2024 11
<?php if(mysqli_num_rows($req)>0){
$servername = 'localhost’; echo "Nombre d'enregistrements :
". mysqli_num_rows($req)."<BR>";
$username = 'root';
while
$password = '';
($enr=mysqli_fetch_row($req)){
$bd = 'dbmysql'; echo "Nom : ".$enr[0]." Prénom :
$conn = ".$enr[1]."<BR>"; }
mysqli_connect($servername, }else{
$username,$password,$bd)
echo "Nombre d'enregistrements :
Or die('Erreur : ' 0 !!!!"; }
.mysqli_connect_error());
}
$sql = "SELECT Nom, Prenom
mysqli_close($conn);
FROM personne";
$req=mysqli_query($conn,$sql); ?>
19/02/2024 12
IX. PHP Supprimer les données de MySQL

<?php // sql pour supprimer un


$servername = 'localhost’; enregistrement
$username = 'root’; $sql = "DELETE FROM personne
$password = ''; WHERE id=1";
$bd = 'magasin'; if (mysqli_query($conn, $sql)) {
// Créer une connexion echo " Enregistrement supprimé
$conn = avec succès ";
mysqli_connect($servername, } else {
$username, $password, $bd); echo " Erreur lors de la
// Vérifier la connexion suppression de l'enregistrement:
if (!$conn) { " . mysqli_error($conn); }
die(" La connexion a échoué: " mysqli_close($conn);
. mysqli_connect_error()); } ?>

19/02/2024 13
X. Mise à jour des données dans MySQL
<?php $sql = "UPDATE personne SET
$servername = 'localhost'; Nom='Patrick' WHERE id=2";
$username = 'root'; if(mysqli_query($conn, $sql)) {
$password = ''; echo " Enregistrement mis à jour
$bd = 'magasin'; avec succès ";
// Créer une connexion } else {
$conn = echo " Erreur lors de la mise à
mysqli_connect($servername, jour de l'enregistrement: " .
$username, $password, $bd); mysqli_error($conn);
// Vérifier la connexion }
if (!$conn) { mysqli_close($conn);
die(" La connexion a échoué: " ?>
. mysqli_connect_error()); }

19/02/2024 14
TP: Exercice d’application
La modélisation de la base de données magasin d’un site de commerce en ligne,
nous emmène a créer le model conceptuel de données (MCD) suivant :

19/02/2024 15
XI. Jointures naturelles
Lorsque nous combinons des lignes de deux tables ou plus en fonction d’une colonne
commune entre elles, cette opération est appelée jointure.

Une jointure naturelle est un type d'opération de jointure qui crée une jointure
implicite en combinant des tables basées sur des colonnes avec le même nom et le
même type de données. Nous ne pouvons pas utiliser la clause ON ou USING avec
une jointure naturelle.
Syntaxe:
SELECT [noms_colonnes | *]
FROM nom_table1
NATURAL JOIN nom_table2;

19/02/2024 16
XI. Jointures naturelles
Exemple d’application:
CREATE TABLE personne (
id INT AUTO_INCREMENT PRIMARY KEY,
nomp VARCHAR(55),
nombre int,
email VARCHAR(55)
)ENGINE=InnoDB;

CREATE TABLE table1(


id INT AUTO_INCREMENT PRIMARY KEY,
nombre int,
colonne1 int,
colonne2 varchar(20)
)ENGINE=InnoDB;
19/02/2024 17
XI. Jointures naturelles
INSERT INTO personne(nomp, nombre,
email)
VALUES('nom1', 50, 'nom1@test.ma’),
('nom2', 34, 'nom2@test.ma’),
('nom3', 12, 'nom3@test.ma’),
('nom4', 66, 'nom4@test.ma’),
('nom5', 10, 'nom5@test.ma');

INSERT INTO table1(nombre,colonne1,


colonne2) VALUES(50, 4, 'test1’),
(34, 2, 'test2’),
(14, 3, 'test3’),
(66, 7, 'test4’),
(10, 6, 'test5');
19/02/2024 18
XI. Jointures naturelles
La jointure des deux tables peut se faire avec la syntaxe suivante:

19/02/2024 19
XI. Jointures naturelles
Une autre méthode pour trouver le même résultat (sans l’utilisation de natural join):

19/02/2024 20
XI. Jointures naturelles
Si on écrit * , on obtient le résultat suivant :

Jointure naturelle avec la clause WHERE:

19/02/2024 21
XI. Jointures naturelles
La jointure des trois tables peut se faire avec :
Syntaxe: SELECT [noms_colonnes | *]
FROM nom_table1
NATURAL JOIN nom_table2
NATURAL JOIN nom_table3;
Soit la table table2 :
INSERT INTO table2(colonne1, ch1, ch2)
CREATE TABLE table2 (
VALUES(4, 'ch1t1', 'ch2t1’),
colonne1 int,
(2, 'ch1t2', 'ch2t2’),
ch1 VARCHAR(15), (3, 'ch1t3', 'ch2t3’),
ch2 VARCHAR(65) (6, 'ch1t4', 'ch2t4’),
)ENGINE=InnoDB; (7, 'ch1t5', 'ch2t5');
19/02/2024 22
XI. Jointures naturelles

19/02/2024 23

Vous aimerez peut-être aussi