27
Jean-Marie Renouard LightPath 2014©

Client base de données en PHP5

Embed Size (px)

DESCRIPTION

Présentation des clients base de données en PHP5

Citation preview

Page 1: Client base de données en PHP5

Jean-Marie Renouard

LightPath 2014©

Page 2: Client base de données en PHP5

Le logo PHP est du domaine public http://commons.wikimedia.org/wiki/File:PHP-logo.svg

Ce document est licencié sous licence ◦ Attribution-NonCommercial-ShareAlike

◦ CC BY-NC-SA

Plus de détails: http://creativecommons.org/licenses/by-nc-sa/3.0/fr/

LightPath 2014© - http://www.jmrenouard.fr 2

Page 3: Client base de données en PHP5

Mysql: API de base

Exécution de requête

PDO: Les bases

PDO: récupération des données

Pattern: CRUD et PDO

LightPath 2014© - http://www.jmrenouard.fr 3

Page 4: Client base de données en PHP5

LightPath 2014© - http://www.jmrenouard.fr 4

Page 5: Client base de données en PHP5

La connexion

La déconnexion

L’exécution d’un requête

La récupération d’un résultat

LightPath 2014© - http://www.jmrenouard.fr 5

Page 6: Client base de données en PHP5

LightPath 2014© - http://www.jmrenouard.fr 6

Page 7: Client base de données en PHP5

Mysql_connect ◦ connexion physique à la base

Paramètres de mysql_connect ◦ Nom de la machine ◦ Utilisateur ◦ Mot de passe ◦ Lien à la base

Mysql_select_db: sélection de la base ◦ Nom de la base ◦ Utilisation de la base courante ◦ Lien à la base

LightPath 2014© - http://www.jmrenouard.fr 7

Page 8: Client base de données en PHP5

mysql_close

déconnexion physique à la base

libérer les ressources des requêtes.

mysql_free_result

LightPath 2014© - http://www.jmrenouard.fr 8

Page 9: Client base de données en PHP5

mysql_query

$result = mysql_query(« insert into utilisateur values( ‘jm’, ‘Renouard’) »); if (!$result) { die('Requête invalide : ' . mysql_error()); }

LightPath 2014© - http://www.jmrenouard.fr 9

Page 10: Client base de données en PHP5

mysql_fetch_rows : ◦ ligne en tableau à index

mysql_fetch_assoc: ◦ ligne à tableau à clé

◦ Chaque clé est une colonne

mysql_fetch_object ◦ Ligne est un objet

◦ Chaque colonne est un attribut de l’objet

LightPath 2014© - http://www.jmrenouard.fr 10

Page 11: Client base de données en PHP5

while ($row = mysql_fetch_row($result)) { echo $row[0]; echo $row[1]; echo $row[2]; }

LightPath 2014© - http://www.jmrenouard.fr 11

Page 12: Client base de données en PHP5

while ($row = mysql_fetch_assoc($result)) { echo $row["userid"]; echo $row["fullname"]; echo $row["userstatus"]; }

LightPath 2014© - http://www.jmrenouard.fr 12

Page 13: Client base de données en PHP5

$result = mysql_query("select * from mytable"); while ($row = mysql_fetch_object($result)) { echo $row->user_id; echo $row->fullname; }

LightPath 2014© - http://www.jmrenouard.fr 13

Page 14: Client base de données en PHP5

LightPath 2014© - http://www.jmrenouard.fr 14

Page 15: Client base de données en PHP5

Ouverture de connexion

try {

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

...

LightPath 2014© - http://www.jmrenouard.fr 15

Page 16: Client base de données en PHP5

Fermeture de connexion

Unset($dbh);

La connexion est supprimée à la fin de vie de l’objet PDO

LightPath 2014© - http://www.jmrenouard.fr 16

Page 17: Client base de données en PHP5

try {

foreach ($dbh->query('SELECT * from CLIENT') as $row) {

print_r($row);

}

} catch (PDOException $e) {

print "Erreur ! : " . $e->getMessage() . "<br/>";

$dbh = null;

die();

}

LightPath 2014© - http://www.jmrenouard.fr 17

Page 18: Client base de données en PHP5

try {

$dbh->beginTransaction();

$dbh->exec("insert into staff (id, first) values (23, 'Joe')");

$dbh->exec("insert into salarychange (id, amount, changedate)

values (23, 50000, NOW())");

$dbh->commit();

} catch (Exception $e) {

echo $e->getMessage();

}

LightPath 2014© - http://www.jmrenouard.fr 18

Page 19: Client base de données en PHP5

LightPath 2014© - http://www.jmrenouard.fr 19

Page 20: Client base de données en PHP5

Tableau à index ◦ Le résultat est affecté dans un tableau à index

Tableau à clé/valeur ◦ Le résultat est affecté dans un tableau à clé ◦ Chaque clé est le nom d’une colonne

Objet ◦ Le résultat est affecté dans un objet existant ◦ Le nom de la colonne et de l’attribut doit collé

Classe ◦ Le résultat est affecté dans un objet de type stdClass

LightPath 2014© - http://www.jmrenouard.fr 20

Page 21: Client base de données en PHP5

La méthode de sélection ◦ $pdo->setFetchMode();

Le paramètre ◦ PDO::FETCH_NUM

◦ PDO::FETCH_ASSOC

◦ PDO:: FETCH_CLASS

◦ PDO::FETCH_INTO

LightPath 2014© - http://www.jmrenouard.fr 21

Page 22: Client base de données en PHP5

$obj = new Utilisateur(); $pdo = new PDO (…); $stmt= $pdo->query(‘select * from utilisateur’,

PDO::FETCH_CLASS,

‘Utilisateur‘ ); $utils=array(); while($util = $stmt -> fetch()) { array_push($utils, $util); } $stmt -> closeCursor();

var_dump($utils);

LightPath 2014© - http://www.jmrenouard.fr 22

Page 23: Client base de données en PHP5

$obj = new Utilisateur(); $pdo = new PDO (…); $util=new Utilisateur();

$stmt= $pdo->query(‘select * from utilisateur limit 1’, PDO::FETCH_INTO,

$util ); $stmt -> fetch();

$stmt -> closeCursor(); var_dump($util);

LightPath 2014© - http://www.jmrenouard.fr 23

Page 24: Client base de données en PHP5

LightPath 2014© - http://www.jmrenouard.fr 24

Page 25: Client base de données en PHP5

Classe utilitaire permettant les 4 fonctions essentiels d’un objet en BD: ◦ C: Create ◦ R: read ◦ U: Update ◦ D: Delete

Il s’agit d’un classe permettant d’interagir

facilement avec la base de données.

LightPath 2014© - http://www.jmrenouard.fr 25

Page 26: Client base de données en PHP5

create() : création un objet utilisateur

save($util): sauvegarde de l’objet $util

findBy($attribut, $valeur): recherche de tous les objet utilisateur ayant l’attribut $attribut valant $valeur.

findOne ($attribut, $valeur): idem pour le premier seulement

LightPath 2014© - http://www.jmrenouard.fr 26

Page 27: Client base de données en PHP5

LightPath: ◦ Société de conseil et d’ingénierie

◦ Formations, Conseil, Audit et mise en œuvre

[email protected]

Jean-Marie RENOUARD ◦ [email protected]

◦ Twitter: @jmrenouard

◦ http://www.jmrenouard.fr

LightPath 2014© - http://www.jmrenouard.fr 27