0% ont trouvé ce document utile (0 vote)
39 vues33 pages

PHP - Chapitre 4

Transféré par

ibtihel l
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues33 pages

PHP - Chapitre 4

Transféré par

ibtihel l
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

PHP

Chapitre 4 : Connexion base de données MySQL


La classe PDO
AU: 2024/2025
Objectifs
• Comprendre le principe de base pour se connecter à une base de données

• Savoir intérroger une base de données mySQL

• Découvrir la classe PDO ainsi que son principe de base pour se connecter à
une base de données

Prérequis
• Langage HTML et syntaxe de base PHP
• PHP orienté objet
2
Échanges de données

3
Echanges de données
Serveur
Web

1 Requête HTTP
2 Script PHP

Exploitation résultats BD
6

Réponse HTTP Connexion BD


7 3
Requête BD
8 Fin de script 4
Résultats BD
5
Affichage résultat BD
9

Serveur BD

Mon PC

4
LA CLASSE DE PDO

5
PDO
▪ PDO : PHP Data Objects

▪ Extension PHP fournissant une interface pour accéder à une base de données

▪ Interface orientée objet

6
Classes prédéfinies
▪ PDO : connexion PHP / base de données
◼ __construct()
◼ exec(), prepare(), query()
◼ errorCode(), errorInfo()
◼ getAttributes(), setAttribute()
◼ lastInsertId()

7
Classes prédéfinies
▪ PDOStatement : requête préparée, jeu de résultats
◼ bindColumn(), bindParam(), bindValue(),
◼ errorCode(), errorInfo()
◼ fetch(), fetchAll(), fetchColumn(), fetchObject(), setFetchMode()
◼ rowCount(), columnCount()
◼ getAttribute(), setAttribute()
◼ execute()

8
COMMENT SE CONNECTER ?

9
Connexions et gestionnaire de connexion
▪ Instanciation d'un objet PDO
▪ $dbh=new PDO(DSN , user , pass);

▪ DSN : Data Source Name


▪ nom_du_driver:syntaxe_spécifique_au_driver
▪ Ex : 'mysql:host=localhost;dbname=ma_base‘

▪ user : nom d'utilisateur,

▪ pass : mot de passe

▪ Fin de connexion : $dbh=null; /* ou */ unset($dbh);


10
GESTION DES ERREURS

11
Gestion des erreurs de connexion
▪ Connexion par construction d'un objet

▪ Gestion envisageable des erreurs


◼ Aucune

◼ Fin brutale (exit, die)

◼ Exception

▪ En cas d'erreur de connexion


◼ Objet PDOException lancé

◼ PDOException hérite de Exception

12
Gestion des erreurs de connexion
<?php
try {
$pdo = new PDO('mysql:host=dbs;dbname=music',
$user, $pass) ;

$pdo = null ;
}
catch (PDOException $e) {
echo "<p>Erreur: ".$e->getMessage() ;
die() ;
}

13
EFFECTUER UNE REQUÊTE SELECT

14
Exécution d’une requête
▪ PDO::query ( string statement ): PDOStatement

Requête
Résultat de requête
<?php
try {
$pdo = new PDO("mysql:host=dbs;dbname=music") ;
$pdostat = $pdo->query("SELECT * FROM artist") ;
}
catch (Exception $e) {
echo "<p>ERREUR : ".$e->getMessage() ;
}
15
Exploitation des résultats
▪ Récupération des données ligne à ligne
▪ Une ligne peut être :
◼ un tableau indexé
◼ un tableau associatif
◼ un objet anonyme
◼ un objet d'une classe définie par l'utilisateur
▪ Récupération des données d'une colonne

16
Parcours du résultats d’une requête
▪ Parcourir le résultat de la requête
Résultat de requête
SELECT *
FROM morceau
ORDER BY mor_id +--------+------------------------------------+
| mor_id | mor_nom |
+--------+------------------------------------+
| 872 | With A Little Help From My Friends |
| 873 | The Letter |
| 874 | Marjorine |
| 875 | Midnight Rider |
| 876 | You Are So Beautiful |
Curseur interne | 877 | Feelin' Allright |
| 878 | Cry Me A River |
...

17
Mode de récupération des données
$pdostat = $pdo->query( "SELECT id, name FROM artist");
$r = $pdostat->fetch(fetch_mode));

fetch_mode
PDO::FETCH_NUM PDO::FETCH_ASSOC
PDO::FETCH_OBJ

PDO::FETCH_CLASS,
ma_classe

// array // ma_classe // object // array


$r[0] $r->id $r->id $r['id']
$r[1] $r->name $r->name $r['name']
18
Mode de récupération des données
Exemple avec PDO::FETCH_NUM

<?php
try{
$pdo=new PDO("mysql:host=localhost;dbname=music" , "root","");
echo "connection établie avec succès <br>"; catch(PDOException $e)
$pdostat = $pdo->query("SELECT * FROM artiste") ; {
while($r = $pdostat->fetch(PDO::FETCH_NUM)) echo "<p>Erreur: ".$e->getMessage() ;
{ die() ;
foreach($r as $v) }
echo $v .' '; ?>
echo '<br>';
}
}

19
Mode de récupération des données
Exemple avec PDO::FETCH_ASSOC

<?php
try{
$pdo=new PDO("mysql:host=localhost;dbname=music" , "root","");
echo "connection établie avec succès <br>"; catch(PDOException $e)
$pdostat = $pdo->query("SELECT * FROM artiste") ; {
$pdostat->setFetchMode(PDO::FETCH_ASSOC); echo "<p>Erreur: ".$e->getMessage() ;
foreach ($pdostat as $ligne) { die() ;
echo "<p>" . $ligne['id'].' '.$ligne['nom'].' '.$ligne['prenom'].' '.$li }
gne['pays'].' '.$ligne['style'].' '."<br>"; ?>

}
}

20
Mode de récupération des données
Exemple avec PDO::FETCH_CLASS

<?php
class Artiste{
public $id;
public $nom;
public $prenom; catch(PDOException $e)
public $pays; {
public $style; echo "<p>Erreur: ".$e->getMessage() ;
} die() ;
try {$pdo = new PDO("mysql:host=localhost;dbname=music","root }
","") ; ?>
$sth = $pdo->prepare("select*from artiste");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS, "Artiste");
var_dump($result);
}
21
Mode de récupération des données
Exemple avec PDO::FETCH_OBJ

<?php
try{
$pdo=new PDO("mysql:host=localhost;dbname=music","root","" catch(PDOException $e)
); {
echo 'Connexion etablie avec succes <br>'; echo "<p>Erreur: ".$e->getMessage() ;
$sth=$pdo->prepare("SELECT *FROM artiste"); die() ;
$sth->execute(); }
$result=$sth->fetchAll(PDO::FETCH_OBJ); ?>
var_dump($result);
}

22
EFFECTUER DES REQUÊTES
INSERT/SELECT

23
Requête INSERT

24
Requête INSERT

25
Requête DELETE

26
REQUÊTES PRÉPARÉES

27
Préparation d’une requête
▪ Déroulement d'une requête SQL
1. Analyse
2. Compilation
3. Optimisation
4. Exécution

▪ Exécution répétée d'une requête : 1+2+3+4

▪ Préparation d'une requête : 1+2+3

▪ Exécution répétée d'une requête préparée : 4

28
Préparation d’une requête
▪ PDO::prepare(string statement): PDOStatement
◼ statement : la requête à préparer.
Peut contenir des paramètres anonymes (?) ou nommés (:nom)
◼ retourne un objet PDOStatement qui effectuera l'association des paramètres et
exécutera la requête

$pdo = new PDO("mysql:host=localhost;dbname=mysql");


$pdostat = $pdo->prepare("SELECT id, name
FROM artist
WHERE id = ?");

29
Association des paramètres d’une requête
▪ PDOStatement::bindValue(mixed parameter, mixed value ): bool
◼ parameter : le paramètre (nom ou position [1…n])
◼ value : sa valeur

▪ PDOStatement::execute([array parameters]): bool


◼ parameters : tableau associatif ou indexé des valeurs

30
Préparation puis exécution d’une requête
$pdo = new PDO("mysql:host=dbs;dbname=app") ;
$pdo->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$pdostat = $pdo->prepare("SELECT * FROM user
WHERE login = ?") ;
$pdostat->bindValue(1, 'root') ;
$pdostat->execute() ;
// Utilisation du résultat paramètre anonyme
$pdostat->bindValue(1, 'cutrona') ;
$pdostat->execute() ;
// Utilisation du résultat

Association
Préparation
Association d'une valeur
Exécution
d'une valeur
de 1er paramètre
delalarequête
au
requête
au 1er paramètre

31
Préparation puis exécution d’une requête
$pdo = new PDO("mysql:host=dbs;dbname=app") ;

$pdostat = $pdo->prepare("SELECT * FROM user


WHERE login = :utilisateur") ;
$pdostat->bindValue(':utilisateur', 'root') ;
$pdostat->execute() ;
// Utilisation du résultat paramètre
$pdostat->bindValue(':utilisateur', 'cutrona') ; nommé
$pdostat->execute() ;
// Utilisation du résultat

Association
Préparation
Exécution
d'une valeur
de
dela
au
larequête
requête
paramètre nommé

32
Merci de votre attention

Vous aimerez peut-être aussi