Search Header Logo
06_05_03 PDO

06_05_03 PDO

Assessment

Presentation

•

Computers

•

6th Grade

•

Practice Problem

•

Medium

Created by

benidir mourad

Used 8+ times

FREE Resource

40 Slides • 8 Questions

1

06_05_03
PDO

2

Introduction à PDO avec PHP et MySQL

  • Objectifs :

    • Comprendre ce qu'est PDO.

    • Apprendre à configurer l'environnement pour utiliser PDO.

    • Se connecter à une base de données MySQL.

    • Effectuer des opérations simples : lire, insérer, mettre à jour, supprimer des données.


3

Qu'est-ce que PDO ?

  • PDO : PHP Data Objects.

  • Permet de se connecter et d’interagir avec plusieurs types de bases de données.

  • Avantages :

    • Supporte plusieurs bases de données (MySQL, SQLite, etc.).

    • Sécurisé grâce aux requêtes préparées.

4

Multiple Choice

Quels types de bases de données PDO peut-il gérer ?

1

Uniquement MySQL

2

SQLite, PostgreSQL, MySQL, etc.

3

Uniquement SQLite

4

Aucun des choix ci-dessus

5

Connexion à une base de données

  • Structure de base :

    1. DSN (Data Source Name) : informations de connexion.

    2. Nom d'utilisateur.

    3. Mot de passe.

6

Connexion à une base de données

  • Exemple simple :

media

7

Multiple Choice

Que signifie DSN dans PDO ?

1

Database Source Name

2

Data Source Name

3

Dynamic Server Node

4

Aucun des choix ci-dessus

8

06_05_Exercice_02 - Se connecter à une base de données

  • Instructions :

    1. Utilisez le code vu auparavant pour vous connecter à la base de données cours_pdo. (créer la base de données avant)

    2. Lancez le script dans votre environnement UwAmp.

    3. Vérifiez que le message "Connexion réussie" s’affiche. Si une erreur se produit, corrigez-la.

    4. Exercice à réaliser dans le réportoire 06_05_Exercice_02

9

Lire des données (SELECT)

  • Contenu :

    • Exemple d'une requête simple avec PDO :

media

10

Explication détaillée ligne par ligne pour comprendre le code précédent:

  • $sql = 'SELECT * FROM utilisateurs';

  • Que fait cette ligne ?

    • On écrit une requête SQL sous forme de chaîne de caractères.

    • La commande SELECT * signifie : récupérer toutes les colonnes de la table utilisateurs.

  • Objectif :

    • Préparer une requête pour obtenir toutes les données de la table utilisateurs.

11

Explication détaillée ligne par ligne pour comprendre le code précédent:

  • $stmt = $pdo->query($sql);

  • Que fait cette ligne ?

    • On exécute la requête SQL grâce à la méthode query() de l'objet PDO ($pdo).

    • Le résultat de cette requête est stocké dans une variable $stmt (abréviation de "statement").

  • Important :

    • La méthode query() est utilisée pour des requêtes simples, comme SELECT.

12

Explication détaillée ligne par ligne pour comprendre le code précédent:

  • while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

  • Que fait cette ligne ?

    • La méthode fetch(PDO::FETCH_ASSOC) récupère une ligne de résultat sous forme de tableau associatif (clé-valeur).

    • La boucle while parcourt chaque ligne de la table une par une.

13

Explication détaillée ligne par ligne pour comprendre le code précédent:

  • Exemple de tableau retourné : Si une table utilisateurs contient :


  • La première exécution de fetch() retourne :

media
media

14

Explication détaillée ligne par ligne pour comprendre le code précédent:

  • echo "Nom : " . $row['nom'] . "<br>";

  • Que fait cette ligne ?

    • On affiche la valeur de la colonne nom pour chaque ligne.

    • "Nom : " est du texte fixe, et $row['nom'] contient le nom récupéré.

    • Le "<br>" permet de passer à la ligne suivante pour chaque résultat.

15

Multiple Choice

À quoi sert PDO::FETCH_ASSOC dans ce code ?

1

À insérer des données.

2

À récupérer les données sous forme de tableau associatif.

3

À exécuter une requête SQL.

4

À créer une base de données.

16

Insérer des données (INSERT)

  • Exemple d'insertion sécurisée :

media

17

Insérer des données (INSERT)

  • $sql = 'INSERT INTO utilisateurs (nom, email) VALUES (:nom, :email)';

  • Que fait cette ligne ?

    • On prépare une requête SQL pour insérer des données dans la table utilisateurs.

    • Les colonnes ciblées sont nom et email.

    • Les valeurs sont représentées par :nom et :email (appelées paramètres nommés).

18

Insérer des données (INSERT)

  • Pourquoi utiliser :nom et :email au lieu de valeurs fixes ?

    • Cela rend la requête sécurisée en empêchant les injections SQL.

    • Ces paramètres seront remplacés par les vraies valeurs plus tard.

19

Insérer des données (INSERT)

  • $stmt = $pdo->prepare($sql);

  • Que fait cette ligne ?

    • La méthode prepare() prépare la requête SQL pour qu’elle puisse être exécutée.

    • Préparer signifie que la structure de la requête est analysée, mais les valeurs ne sont pas encore ajoutées.

    • Cela améliore la sécurité et les performances.

20

Insérer des données (INSERT)

  • $stmt->bindParam(':nom', $nom);

  • Que fait cette ligne ?

    • La méthode bindParam() associe le paramètre :nom (dans la requête SQL) à la variable $nom (dans le code PHP).

    • Chaque fois que la requête SQL utilise :nom, elle sera remplacée par la valeur contenue dans $nom.

21

Insérer des données (INSERT)

  • Pourquoi utiliser bindParam() ?

    • Elle permet de lier une variable PHP à un paramètre SQL.

    • La valeur n’est pas copiée immédiatement : la liaison est active jusqu'à l’exécution de la requête avec execute().

22

Insérer des données (INSERT)

  • $stmt->bindParam(':email', $email);

  • Que fait cette ligne ?

    • Même principe que bindParam(':nom', $nom).

    • Le paramètre :email sera remplacé par la valeur de $email lorsque la requête sera exécutée.

23

Insérer des données (INSERT)

  • $nom = 'Alice'; et $email = 'alice@example.com';

  • Que font ces lignes ?

    • On attribue des valeurs aux variables $nom et $email qui seront utilisées dans la requête.

    • Ces valeurs seront injectées dans la requête grâce à bindParam().

24

Insérer des données (INSERT)

  • $stmt->execute();

  • Que fait cette ligne ?

    • La méthode execute() exécute la requête préparée avec les valeurs liées (via bindParam()).

    • Une fois exécutée, la base de données ajoute une nouvelle ligne dans la table utilisateurs.

25

Insérer des données (INSERT)

  • Concept clé : Les paramètres nommés (:nom, :email)

  • Pourquoi mettre : devant le nom ?

    • En SQL, les paramètres nommés sont des placeholders qui indiquent où insérer des valeurs dynamiques.

    • Ils commencent toujours par : pour les différencier des colonnes ou des valeurs fixes.

26

Insérer des données (INSERT)

  • Pourquoi utiliser bindParam() au lieu d’écrire directement les valeurs ?

  • Avantages :

    • Sécurité : Protège contre les injections SQL (car les valeurs sont échappées automatiquement).

    • Réutilisabilité : La requête préparée peut être exécutée plusieurs fois avec des valeurs différentes.

27

Insérer des données (INSERT)

  • Alternative possible : bindValue()

  • Si vous voulez assigner une valeur fixe (pas une variable), vous pouvez utiliser bindValue() :

media

28

Résumé : Étapes pour insérer des données avec PDO

  • Écrire la requête SQL avec des paramètres nommés (:nom, :email).

  • Préparer la requête avec prepare().

  • Lier les paramètres avec bindParam() ou bindValue().

  • Attribuer des valeurs aux variables si vous utilisez bindParam().

  • Exécuter la requête avec execute().

29

Multiple Choice

Quel est l’avantage principal d’utiliser des paramètres nommés et des requêtes préparées ?

1

Améliorer la lisibilité du code.

2

Protéger contre les injections SQL.

3

Ajouter plusieurs lignes à la fois.

4

Permettre des jointures entre tables.

30

Modifier ou supprimer des données (UPDATE et DELETE)

  • Exemple de modification :

media

31

Modifier ou supprimer des données (UPDATE et DELETE)

  • Exemple de suppression :

media

32

Multiple Choice

Quelle commande SQL permet de supprimer une ligne ?

1

DELETE

2

UPDATE

3

SELECT

4

INSERT

33

06_05_Exercice_03 - Ajoutez un utilisateur dans la table utilisateurs en saisissant un prénom et un email via un formulaire d'inscription.

  • Ajoutez un utilisateur dans la table utilisateurs en saisissant un prénom et un email via un formulaire d'inscription.

  • Consignes :

    1. Vérifiez dans phpMyAdmin si l’utilisateur a bien été ajouté.

    2. Exportez la base de données dans le répertoire 06_05_Exercice_03

34

06_05_Exercice_04 - Insérez trois utilisateurs différents en utilisant une boucle.

  • Consignes :

    1. Créez un tableau PHP contenant trois ensembles de noms et emails.

    2. Parcourez ce tableau avec une boucle pour insérer chaque utilisateur.

    3. Exemple de tableau :

media

35

Vérifier la présence d'une donnée dans une base de données avec PDO

36

Tester si une donnée est présente dans une base de données

  • Souvent, il est nécessaire de vérifier si une donnée existe déjà dans une base, par exemple :

    • Lorsqu’un utilisateur s’inscrit, vérifier si son adresse email existe déjà.

    • Éviter les doublons dans des données importantes.

  • Exemple pratique :

    • Vérifier si une adresse email est déjà enregistrée avant d'ajouter un nouvel utilisateur.

37

Multiple Choice

Pourquoi vérifier si une donnée est présente dans une base de données ?

1

Pour éviter les doublons.

2

Pour accélérer les requêtes SQL.

3

Pour supprimer les données inutiles.

4

Aucun des choix.

38

Requête SQL : SELECT avec condition

  • La commande SQL SELECT permet de vérifier si une donnée existe :

media

39

Requête SQL : SELECT avec condition

  • Traduction de la requête précédente :

    • Récupère les lignes de la table utilisateurs où la colonne email est égale à 'email@example.com'.

  • Résultat :

    • Si la requête retourne une ou plusieurs lignes, la donnée existe.

    • Si elle ne retourne rien, la donnée est absente.

40

Requête SQL : SELECT avec condition

  • Voici un exemple simple pour vérifier si une adresse email existe dans la table utilisateurs :

media

41

Requête SQL : SELECT avec condition
Explications ligne par ligne :

  • Préparer la requête avec un paramètre nommé (:email).

  • Associer une valeur à :email avec bindParam.

  • Exécuter la requête.

  • Utiliser rowCount() pour vérifier combien de lignes sont retournées :

    • > 0 : la donnée existe.

    • = 0 : la donnée n'existe pas.

42

06_05_Exercice_05 - Vérifiez si l’adresse test@example.com est présente dans la table utilisateurs.

  • Consigne :

    • Utilisez le code présenté dans les slides précédents.

    • Modifiez la valeur de $email pour tester différentes adresses.

43

Multiple Choice

Quelle commande SQL permet de vérifier la présence d’une donnée ?

1

INSERT

2

SELECT

3

DELETE

4

UPDATE

44

Multiple Choice

Quelle méthode PDO retourne le nombre de lignes trouvées ?

1

bindParam()

2

fetch()

3

rowCount()

4

execute()

45

Comprendre et mettre en pratique le chiffrement des mots de passe avant leur sauvegarde

46

Introduction

Dans le développement d'applications, il est essentiel de protéger les données sensibles comme les mots de passe des utilisateurs. Les sauvegarder en clair est une erreur grave. Dans cet exercice, vous apprendrez à utiliser une méthode sécurisée pour chiffrer les mots de passe avant de les stocker dans une base de données.

47

Objectifs

  1. Comprendre comment chiffrer un mot de passe.

  2. Implémenter un chiffrement sécurisé

  3. Tester votre solution pour garantir son bon fonctionnement.

48

Exercice de recherche : 06_05_Exercice_06 - Sécurisation des mots de passe en PHP

  1. Créer un formulaire d'inscription permettant à un utilisateur de fournir un nom d'utilisateur et un mot de passe.

  2. Vérifier si l'utilisateur existe déjà dans la base de données.

  3. Chiffrer le mot de passe avec password_hash() avant de le sauvegarder dans la base de données.

  4. Implémenter une page de connexion permettant à l'utilisateur de vérifier son mot de passe avec password_verify().

pattern-tertiary
06_05_03
PDO

Show answer

Auto Play

Slide 1 / 48

SLIDE