Vous êtes sur la page 1sur 27

Chapitre 7 : MySQL et PHP

12 ISET Rades 2012-2013


Plan de la partie MySQL et PHP

Voici les chapitres que nous allons aborder:


■ Qu’est ce que MySQL?
■ PHPmyadmin
■ Utilser PHP MysqL avec PHP
■ Connexion PDO
■ Préparation d’une requête

2
Qu’est-ce que MySQL? MySQL et PHP

• MySQL est SGBD très populaire, performant et fiable.


• MySQL est développé par MySQL AB (http://www.mysql.com)
sous une license GPL (GNU General Public License).
• Utilisable dans la console :
– mysql -u <identifiant> [base_de_donnée]
– mysql -u <identifiant> [base_de_donnée] <
requete.sql
• Utilisable avec PHPMyAdmin
• Interfaçable avec PHP

3
Qui utilise MySQL? MySQL et PHP

• NASA, Yahoo! Finance, Ericsson, U.S. Census


Bureau, Motorola, Texas Instruments, Silicon
Graphics, MP3.com.
Source MySQL AB.

4
PHPMyAdmin MySQL et PHP

• Avec PHPMyAdmin, on peut :


– Créer une base
– Créer des tables
– Modifier des tables
– Remplir des tables
– Supprimer des tables
– Faire des requêtes SQL

• Il est également possible d’exporter la structure et le


contenu de la base vers d’autres formats

5
Utiliser MySQL avec PHP MySQL et PHP

• PHP propose plusieurs moyens pour se connecter à une base de


données MySQL :
L'extension mysql_ : ce sont des fonctions qui permettent
d'accéder à une base de données MySQL. Ces fonctions
sont vieilles et on recommande de ne plus les utiliser
aujourd'hui

L'extension mysqli_ : ce sont des fonctions améliorées


d'accès à MySQL, proposant plus de fonctionnalités et sont
plus à jour.

PHP Data Objects (PDO) c'est un outil complet qui permet


d'accéder à n'importe quel type de base de données.

6
Connexion avec PDO MySQL et PHP

• PDO permet de se connecter à n'importe quel type de base de


données

• Activer PDO
✔ par défaut cette extension est installée
✔ Pour l’activer, faites un clic gauche sur l'icône de Easyphp dans la barre des
tâches, puis allez dans le menu PHP / Extensions PHPet vérifiez
que php_pdo_mysql est bien coché.

7
Qu’est ce que PDO? MySQL et PHP

• PDO signifie Php Data Object

• PDO est une classe PHP destinée à permettre à PHP de


communiquer avec un serveur de données.

• PDO est une couche d'abstraction à l'accès de données,


=> Utiliser les mêmes fonctions pour exécuter des requêtes ou
récupérer les données quelque soit la base de données utilisée.

8
Les principales fonctions de PDO MySQL et PHP

• PDO est une classe PHP destinée à permettre à PHP de


communiquer avec un serveur de données. Les principales
fonctions de cette classe sont :
✔ __construct : Crée une instance PDO qui représente une connexion à
la base
✔ exec : Exécute une requête SQL (update, insert ou delete)
et retourne le nombre de lignes affectées
✔ query : Exécute une requête SQL (select), retourne objet
PDOStatement
✔ prepare : pour la requête préparée

9
Connexion à une base de données MySQL et PHP

• L'exploitation de MySQL avec PHP s'effectue en


plusieurs étapes :

1. ouverture d'une connexion à MySQL et sélection de


la base de données
2. requête sur la base de données
3. exploitation des résultats de la requête
4. fermeture de la connexion à MySQL

10
Connexion au serveur MySQL MySQL et PHP

• Voici donc comment on doit faire pour se connecter à MySQL via PDO
sur la base « Gestion_personne » :
<?php
$dns ='mysql:host=localhost;dbname=Gestion_personne';
$utilisateur= 'root';
$motDepasse= '‘;
$connexion = new PDO($dns, $utilisateur, $motDePasse);
?>

• $connexion est un objet de la classe PDO qui représente la connexion


à la base de données.
• On crée la connexion en indiquant dans l'ordre dans les paramètres :
– le nom d'hôte (localhost) ;
– la base de données (test) ;
– le login (root) ;
– le mot de passe (ici il n'y a pas de mot de passe, on met une
chaîne vide).
11
Gestion d’erreur : Exception MySQL et PHP

• Vous pouvez avoir une erreur pour plusieurs raisons :


– mauvais paramètres,
– des paramètres qui ne correspondent pas au driver que vous souhaitez
utiliser.
Intercepter les erreurs de connexion avec un try { catch }
// Connection au serveur
try {
$dns = 'mysql:host=localhost;dbname=formation';
$utilisateur = 'root';
$motDePasse = '';
$connection new PDO($dns, $utilisateur, $motDePasse
);}
catch ( Exception $e )
{ echo "Connection à MySQL impossible :", $e->getMessage();
die(); // ET mettre un arrêt du script
}
12
connection.php
Envoyer des requêtes MySQL et PHP

• Une fois connecter au serveur MySQL avec notre objet PDO, nous
allons pouvoir commencer à envoyer des requêtes au serveur.

• L’envoie des requêtes avec PDO, dépend du type de requêtes. On


distingue 2 types de requêtes :

✔ Les requêtes qui sélectionnent des enregistrements : SELECT


✔ Les requêtes qui transforment les enregistrements
: UPDATE / INSERT / DELETE

13
Envoyer une requête de selection MySQL et PHP

• PDOStatement PDO::query ( string $req )

Résultat de requête Requête

//connexion au serveur de données


require_once(‘connection.php');
// envoie la requête
$res = $connection->query("SELECT * FROM Gestion_personne");

• La variable $res contient maintenant le résultat de la requête,


mais sous la forme d’un objet : PDOStatement
• La classe PDOStatement : permet de gérer l’affichage du résultat
retourné par le serveur en fournissant plusieurs méthodes

14
Exploitation des résultats d'une
MySQL et PHP
requête
• PDO nous offre la liberté d'utiliser la réponse au format que nous
voulons (tableau, objet, etc.) :

✔ PDO::FETCH_NUM: retourne un tableau indexé par le numéro de la


colonne, commençant à 0
✔ PDO::FETCH_OBJ: retourne un objet anonyme avec les noms de propriétés
qui correspondent aux noms des colonnes retournés dans le jeu de
résultats
✔ PDO::FETCH_BOTH est utilisé, ce qui veut dire qu'à chaque appel
de fetch(), un tableau PHP contenant l'enregistrement actuel est retourné,
indexé à la fois numériquement et associativement.
✔ PDO::FETCH_ASSOC
o La configuration du format du résultat (objet PDOstatement)
retourné se fait avant ou juste après l’envoie de la requête au
serveur
15
Exploitation des résultats d'une
MySQL et PHP
requête
• Avec Méthode fetch(PDO::FETCH_OBJ)
Petite variante avec une ligne de moins, dans cette exemple, le
format de récupération (Format Objet) est précisé au moment
du fetch() :
$res=$connection->query(’’select * from client’’);
// On indique que nous utiliserons les résultats en tant
//qu'objet juste après l’envoie de la requête

// Nous traitons les résultats en boucle


while( $enregistrement = $res->fetch(PDO::FETCH_OBJ) )
{ // Affichage des champs
echo '<h1>', $enregistrement->nom, ' ',
$enregistrement->prenom, '</h1>‘;
}

16
Exploitation des résultats d'une
MySQL et PHP
requête
• Avec Méthode fetchAll(PDO::FETCH_OBJ)
Cette méthode va convertir notre objet de résultats en un tableau
d'objet,
ensuite nous traitons le tableau comme un tableau classique, ce cas
d'application est surtout utilisé pour traiter des listes de résultats
(Lorsque
$res=$connection->query(’’select
l'on s'attend à plusieurs résultats) * from client’’);
$liste=$res->fetchAll(PDO::FETCH_OBJ);
// Nous traitons les résultats en boucle
while( $enregistrement = next($liste))
{ // Affichage des champs
echo '<h1>', $enregistrement->nom, ' ',
$enregistrement->prenom, '</h1>‘;}

17
RowCount(), columnCount() MySQL et PHP

• Envoie de la requête select :

$result = $connection->query('SELECT * FROM table') ;

• nombre de lignes : rowCount()


echo $result->rowCount() ;
• nombre de champs : columnCount()
echo $result->columnCount() ;

18
Envoyer une requête de mise à
MySQL et PHP
jour
• La méthode query est utilisée pour faire des SELECT, pour réaliser
des UPDATE/INSERT ou des DELETE, nous utiliserons plutôt la
méthode exec :
excec($requete)
• Exemple :

//connexion au serveur de données


require_once(‘connection.php');
// envoie la requête
$nb_ligne=$connection->exec("delete FROM client where id=2");
//$nb_ligne contient le nombre de lignes

19
Préparation d'une requête MySQL et PHP

• 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
• Préparation en fonction de paramètres :
– Anonymes
– Nommés

20
Préparation d'une requête MySQL et PHP

▪ prepare () :
▪ est une méthode de la classe pdo
▪ Prépare une requête
▪ retourne un objet PDOStatement qui effectuera
l'association des paramètres et exécutera la requête
▪ la requête à préparer. Peut contenir des paramètres anonymes
(?) ou nommés (:nom)
▪ Exemple :
$pdo=new
PDO("mysql:host=localhost;dbname=mysql,’root’,’’") ;
$pdostat = $pdo->prepare(«
SELECT * FROM user WHERE User= ?") ;

21
Préparation d'une requête MySQL et PHP

• Exemple 1
$pdo=new
PDO("mysql:host=localhost;dbname=mysql",‘root’,’’) ;

$pdostat = $pdo->prepare(
"SELECT * FROM user WHERE User= ?") ;
$pdostat->bindValue(1, 'root') ;
paramètre anonyme
$pdostat->execute() ;
// Utilisation du résultat
$pdostat->bindValue(1, 'cutrona') ;
$pdostat->execute() ;
// Utilisation du résultat
Association
Exécution
Associationd'une
d'unevaleur
Préparationde
valeur au
au 1er paramètre
delalarequête
1er
requêteparamètre

22
Préparation d'une requête MySQL et PHP

• Exemple 2

$pdo=new PDO("mysql:host=localhost;dbname=mysql") ;
$pdo->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$pdostat = $pdo->prepare(
"SELECT * FROM user WHERE User= :utilisateur") ;
$pdostat->bindValue(':utilisateur','root') ;
$pdostat->execute() ; paramètre nommé
// Utilisation du résultat
$pdostat->bindValue(':utilisateur', ‘Foulene') ;
$pdostat->execute() ;
// Utilisation du résultat

Association d'une valeur


Préparation
Exécution de au
dela paramètre nommé
larequête
requête

23
Préparation d'une requête MySQL et PHP

• Exemple 3

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

$pdostat = $pdo->prepare(
"SELECT * FROM user WHERE User= ?") ;
$pdostat->execute(array('root')) ;
// Utilisation du résultat paramètre anonyme
$pdostat->execute(array(‘Foulene')) ;
// Utilisation du résultat

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

24
Préparation d’une requête MySQL et PHP

• Exemple 4

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

$pdostat = $pdo->prepare( paramètre nommé


"SELECT * FROM user WHERE User= :utilisateur") ;
$pdostat->execute(
array(':utilisateur' => 'root')) ;
// Utilisation du résultat
$pdostat->execute(
array(':utilisateur' => ‘Foulene')) ;
// Utilisation du résultat

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

25
Classe PDO
PDO {
public __construct ( string $dsn [, string $username [, string $password [, array $driver_options]]] )
public bool beginTransaction ( void )
public bool commit ( void )
public mixed errorCode ( void )
public array errorInfo ( void )
public int exec ( string $statement )
public mixed getAttribute ( int $attribute )
public static array getAvailableDrivers ( void )
public bool inTransaction ( void )
public string lastInsertId ([ string $name = NULL ] )
public PDOStatement prepare ( string $statement [, array $driver_options = array() ] )
public PDOStatement query ( string $statement )
public string quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )
public bool rollBack ( void )
public bool setAttribute ( int $attribute , mixed $value )
}

26
Bibliographie

• PHP 5 Cours et exercices - PHP 5.4 Auteur(s) : Jean Engels,


Eyrolles , PHP 5 avancé, Eyrolles.
• PHP 5 Auteur(s) : Johann-Christian Hanke , Compétence
Micro
• PHP 5.5 - Développez un site web dynamique et interactif :
Olivier Heurtel, Eni
• PHP et MySQL : Luke Welling, Laura Thomson Editeur(s) :
Pearson

•http://oseox.fr/php/langage-php.html

•http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-
php-et-mysql

•http://www.slideshare.net/JMF/utilisation-optimale-et-professionnelle-de-php

•http://www.atelierphp.net

Vous aimerez peut-être aussi