SlideShare a Scribd company logo
1 of 27
Download to read offline
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 oeuvre 
◦jmrenouard@lightpath.fr 
Jean-Marie RENOUARD 
◦jmrenouard@gmail.com 
◦Twitter: @jmrenouard 
◦http://www.jmrenouard.fr 
LightPath 2014© - http://www.jmrenouard.fr 
27

More Related Content

What's hot

Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
kader15
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
Vincent Composieux
 
PHP5 - POO
PHP5 - POOPHP5 - POO
PHP5 - POO
mazenovi
 

What's hot (19)

Email et PHP5
Email et PHP5Email et PHP5
Email et PHP5
 
Le client FTP de PHP5
Le client FTP de PHP5Le client FTP de PHP5
Le client FTP de PHP5
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 
SQL et MySQL
SQL et MySQLSQL et MySQL
SQL et MySQL
 
Javascript et JQuery
Javascript et JQueryJavascript et JQuery
Javascript et JQuery
 
Les structures de données PHP5
Les structures de données PHP5Les structures de données PHP5
Les structures de données PHP5
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !
 
PHP5 - POO
PHP5 - POOPHP5 - POO
PHP5 - POO
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 

Viewers also liked

rapport_stage_issame
rapport_stage_issamerapport_stage_issame
rapport_stage_issame
AMAL Issame
 
Introduction au webmapping au-dela de google maps
Introduction au webmapping  au-dela de google mapsIntroduction au webmapping  au-dela de google maps
Introduction au webmapping au-dela de google maps
VisionGÉOMATIQUE2012
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
Nathaniel Richand
 
Click and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et JenkninsClick and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et Jenknins
Sophie Beaupuis
 

Viewers also liked (14)

Ssh cookbook
Ssh cookbookSsh cookbook
Ssh cookbook
 
Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur LinuxManuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
 
Structure de données en PHP
Structure de données en PHPStructure de données en PHP
Structure de données en PHP
 
Cours php
Cours phpCours php
Cours php
 
Mvc (5)
Mvc (5)Mvc (5)
Mvc (5)
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et php
 
Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)
 
rapport_stage_issame
rapport_stage_issamerapport_stage_issame
rapport_stage_issame
 
Introduction au webmapping au-dela de google maps
Introduction au webmapping  au-dela de google mapsIntroduction au webmapping  au-dela de google maps
Introduction au webmapping au-dela de google maps
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Zf2++ Quelques idées sur l'avenir proche de ZF2
Zf2++ Quelques idées sur l'avenir proche de ZF2Zf2++ Quelques idées sur l'avenir proche de ZF2
Zf2++ Quelques idées sur l'avenir proche de ZF2
 
Click and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et JenkninsClick and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et Jenknins
 
How Much Further Will Internet Stocks Fall? (Share Price Performance)
How Much Further Will Internet Stocks Fall? (Share Price Performance)How Much Further Will Internet Stocks Fall? (Share Price Performance)
How Much Further Will Internet Stocks Fall? (Share Price Performance)
 

Similar to Client base de données en PHP5

Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
julien pauli
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
Xavier NOPRE
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docx
VincentBweka
 
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Fabien Potencier
 

Similar to Client base de données en PHP5 (20)

Présentation de DBAL en PHP
Présentation de DBAL en PHPPrésentation de DBAL en PHP
Présentation de DBAL en PHP
 
Présentation de DBAL en PHP (Nantes)
Présentation de DBAL en PHP (Nantes)Présentation de DBAL en PHP (Nantes)
Présentation de DBAL en PHP (Nantes)
 
Formation php pdo
Formation php pdoFormation php pdo
Formation php pdo
 
Php Data Object
Php Data ObjectPhp Data Object
Php Data Object
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afup
 
SQL_Python.pdf
SQL_Python.pdfSQL_Python.pdf
SQL_Python.pdf
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?
 
HTML5 en projet
HTML5 en projetHTML5 en projet
HTML5 en projet
 
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaPHP 5 pour les développeurs Java
PHP 5 pour les développeurs Java
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
Cours PHP PDO intégrale afin de mieux appréhender la nouvelle librairie
Cours PHP PDO intégrale afin de mieux appréhender la nouvelle librairieCours PHP PDO intégrale afin de mieux appréhender la nouvelle librairie
Cours PHP PDO intégrale afin de mieux appréhender la nouvelle librairie
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docx
 
Zf2 ce-qui-va-changer
Zf2 ce-qui-va-changerZf2 ce-qui-va-changer
Zf2 ce-qui-va-changer
 
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
 
Ouvrir vos plugins aux autres développeurs - WPTech Nantes
Ouvrir vos plugins aux autres développeurs - WPTech NantesOuvrir vos plugins aux autres développeurs - WPTech Nantes
Ouvrir vos plugins aux autres développeurs - WPTech Nantes
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 

Client base de données en PHP5

  • 2. 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
  • 3. 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
  • 4. LightPath 2014© - http://www.jmrenouard.fr 4
  • 5. 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
  • 6. LightPath 2014© - http://www.jmrenouard.fr 6
  • 7. 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
  • 8. mysql_close déconnexion physique à la base libérer les ressources des requêtes. mysql_free_result LightPath 2014© - http://www.jmrenouard.fr 8
  • 9. 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
  • 10. 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
  • 11. while ($row = mysql_fetch_row($result)) { echo $row[0]; echo $row[1]; echo $row[2]; } LightPath 2014© - http://www.jmrenouard.fr 11
  • 12. while ($row = mysql_fetch_assoc($result)) { echo $row["userid"]; echo $row["fullname"]; echo $row["userstatus"]; } LightPath 2014© - http://www.jmrenouard.fr 12
  • 13. $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
  • 14. LightPath 2014© - http://www.jmrenouard.fr 14
  • 15. Ouverture de connexion try { $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); ... LightPath 2014© - http://www.jmrenouard.fr 15
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. LightPath 2014© - http://www.jmrenouard.fr 19
  • 20. 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
  • 21. 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
  • 22. $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
  • 23. $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
  • 24. LightPath 2014© - http://www.jmrenouard.fr 24
  • 25. 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
  • 26. 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
  • 27. LightPath: ◦Société de conseil et d’ingénierie ◦Formations, Conseil, Audit et mise en oeuvre ◦jmrenouard@lightpath.fr Jean-Marie RENOUARD ◦jmrenouard@gmail.com ◦Twitter: @jmrenouard ◦http://www.jmrenouard.fr LightPath 2014© - http://www.jmrenouard.fr 27