Upload
jean-marie-renouard
View
186
Download
2
Embed Size (px)
DESCRIPTION
Présentation des clients base de données en PHP5
Citation preview
Jean-Marie Renouard
LightPath 2014©
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
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
LightPath 2014© - http://www.jmrenouard.fr 4
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
LightPath 2014© - http://www.jmrenouard.fr 6
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
mysql_close
déconnexion physique à la base
libérer les ressources des requêtes.
mysql_free_result
LightPath 2014© - http://www.jmrenouard.fr 8
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
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
while ($row = mysql_fetch_row($result)) { echo $row[0]; echo $row[1]; echo $row[2]; }
LightPath 2014© - http://www.jmrenouard.fr 11
while ($row = mysql_fetch_assoc($result)) { echo $row["userid"]; echo $row["fullname"]; echo $row["userstatus"]; }
LightPath 2014© - http://www.jmrenouard.fr 12
$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
LightPath 2014© - http://www.jmrenouard.fr 14
Ouverture de connexion
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
...
LightPath 2014© - http://www.jmrenouard.fr 15
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
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
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
LightPath 2014© - http://www.jmrenouard.fr 19
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
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
$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
$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
LightPath 2014© - http://www.jmrenouard.fr 24
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
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
LightPath: ◦ Société de conseil et d’ingénierie
◦ Formations, Conseil, Audit et mise en œuvre
Jean-Marie RENOUARD ◦ [email protected]
◦ Twitter: @jmrenouard
◦ http://www.jmrenouard.fr
LightPath 2014© - http://www.jmrenouard.fr 27