Vous êtes sur la page 1sur 24

Accès à une base

de données
MySQL
Fait par Mme : Nouzri Sana
Plan
Introduction à MySQL,
Connexion depuis PHP à une base de données
MySQL,
Les extensions PHP pour les SGBD
Extension MySQLi,
Extension PDO,
Principe PDO,
Manipulation des données en utilisant PDO
Introduction à MySQL
Concepts de base
Base de données

Une base de données informatique est un ensemble de données qui ont été stockées
sur un support informatique, organisées et structurées de manière à pouvoir
facilement consulter et modifier leur contenu.

Une base de données seule ne suffit donc pas, il est nécessaire d'avoir également :

 un système permettant de gérer cette base ;


 un langage pour transmettre des instructions à la base de données (par
l'intermédiaire du système de gestion).
Introduction à MySQL
Concepts de base
SGBD
Un Système de Gestion de Base de Données (SGBD) est un logiciel (ou un ensemble
de logiciels) permettant de manipuler les données d'une base de données, (Create,
Read, Update, Delete) pour "CRUD".

MySQL est un système de gestion de bases de données.

Le paradigme client - serveur


La plupart des SGBD sont basés sur un modèle Client - Serveur. C'est-à-dire que
la base de données se trouve sur un serveur qui ne sert qu'à ça et pour interagir avec
cette base de données, il faut utiliser un logiciel "client" qui va interroger le serveur
et transmettre la réponse que le serveur lui aura donnée
Introduction à MySQL
Concepts de base
SGBDR
 Le R de SGBDR signifie "relationnel". Un SGBDR est un SGBD qui implémente
la théorie relationnelle.
 MySQL implémente la théorie relationnelle ; c'est donc un SGBDR.
 Dans un SGBDR, les données sont contenues dans ce qu'on appelle des relations,
qui sont représentées sous forme de tables. Une relation est composée de deux
parties, l'en-tête et le corps.
Introduction à MySQL
Concepts de base

Le langage SQL

 Le SQL (Structured Query Language) est un langage informatique qui permet


d'interagir avec des bases de données relationnelles. C'est le langage pour base
de données le plus répandu et c'est bien sûr celui utilisé par MySQL.

 Il a été créé dans les années 1970 et c'est devenu standard en 1986 (pour la norme
ANSI - 1987 en ce qui concerne la norme ISO). Il est encore régulièrement
amélioré.
Introduction à MySQL
Concepts de base

 MySQL est donc un Système de Gestion de Bases de Données Relationnelles,


qui utilise le langage SQL. C'est un des SGBDR les plus utilisés. Sa popularité
est due en grande partie au fait qu'il s'agit d'un logiciel Open Source.

 PostgreSQL : libre et gratuit comme MySQL, avec plus de fonctionnalités mais


un peu moins connu ;

 SQLite: libre et gratuit, très léger mais très limité en fonctionnalités ;

 Oracle : utilisé par les très grosses entreprises ; sans aucun doute un des SGBD
les plus complets, mais il n'est pas libre et on le paie le plus souvent très cher ;

 MS Access est un logiciel payant qui ne fonctionne que sous Windows. Il n'est
pas du tout adapté pour gérer un grand volume de données et a beaucoup moins
de fonctionnalités que les autres SGBDR

 Microsoft SQL Server : le SGBD de Microsoft.


Introduction à MySQL
PHPMYADMIN

Accéder à une base de données et d'y faire des modifications, se fait par
plusieurs façons :

 Une ligne de commande (console),


 Exécuter les requêtes en PHP,
 Faire appel à un programme (phpMyAdmin) qui nous permet d'avoir rapidement
une vue d'ensemble.

phpMyAdmin, un des outils les plus connus permettant de manipuler une base de
données MySQL.
Création des tables et manipulation des
données
Connexion depuis PHP à une base de
données MySQL
Extensions PHP pour les SGBD
 Etablit une connexion avec MySQL : PHP doit s'authentifier pour pouvoir faire
toutes les opérations sur la base de données MySQL.
 PHP propose plusieurs moyens de 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 et donc de communiquer avec MySQL. Toutefois, 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. Elles


proposent plus de fonctionnalités et sont plus à jour.

L'extension PDO : c'est un outil complet qui permet d'accéder à n'importe quel
type de base de données. On peut donc l'utiliser pour se connecter aussi bien à
MySQL que PostgreSQL ou Oracle.
Connexion depuis PHP à une base de
données MySQL
Extension MySQLi
 (Abréviation pour MySQL Improved en anglais, c'est-à-dire, en
français, MySQL Amélioré) est un pilote qui permet d'interfacer des programmes
écrits dans le langage de programmation PHP avec les bases de données MySQL.

 Le module MySQLi peut être utilisé en mode procédural ou en programmation


orientée objet.
<?php
$bdd = mysqli_connect('serveur', 'utilisateur', 'mot_de_passe', 'base');
?>
programmation procédural

<?php
$mysql = new MySQLi($serveur, $nomUtilisateur, $motDePasse, $base);
?>
programmation orientée objet
Connexion depuis PHP à une base de
données MySQL
L'extension PDO
 PDO permet de se connecter à n'importe quel type de base de données.
 Elle est devenue la plus utilisée dans les prochaines versions de PHP.

Activer PDO
PDO est activé par défaut. Pour le vérifier, faites un clic gauche
sur l'icône de WAMP dans la barre des tâches, puis allez dans le
menu PHP / Extensions PHP et vérifiez que php_pdo_mysql est
bien coché.
Connexion depuis PHP à une base de
données MySQL
Principe PDO

 PDO fait intervenir le concept de programmation orientée objet.


 PDO permet notamment d'utiliser les transactions.
 Comme le pilote MySQL, PDO se connecte à la base de données et fourni les
informations (L'adresse de la base de données, Le nom de la base de données, Le
nom d'utilisateur ) et le mot de passe
 Il crée un objet PDO pour interagir avec MySQL.

Un des avantages de PDO est de pouvoir utiliser les exceptions. Cela va nous
permettre de lancer une transaction et selon le résultat (échec ou réussite de la
transaction) agir en conséquence.
Manipulation des données en utilisant
PDO
Se connecter à MySQL avec PDO
 quatre renseignements importants pour se connecter à MySQL :

 le nom de l'hôte : c'est l'adresse de l'ordinateur où MySQL est installé (comme


une adresse IP). Le plus souvent, MySQL est installé sur le même ordinateur que
PHP : dans ce cas, mettez la valeur localhost.
 la base : c'est le nom de la base de données à laquelle vous voulez vous connecter.
 le login : il permet de vous identifier. Renseignez-vous auprès de votre hébergeur
pour le connaître (root).
 le mot de passe :il permet de vous donner l’accés. Renseignez-vous auprès de
votre hébergeur ‘’ .
<?php
// Sous WAMP (Windows)
$bdd = new PDO('mysql:host=localhost,dbname=test;charset=utf8', 'root', '');
?>
Manipulation des données en utilisant
PDO
Tester la présence d'erreurs
Il est préférable de traiter l'erreur. En cas d'erreur, PDO renvoie ce qu'on appelle une
exception qui permet de « capturer » l'erreur

<?php
// Sous WAMP (Windows)
try
{
$bdd = new PDO('mysql:host=localhost;dbname=NvBd;charset=utf8', 'root', '');

}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
Manipulation des données en utilisant
PDO
Récupérer les données
Pour récupérer des informations de la base de données, nous avons besoin de notre
objet représentant la connexion à la base ($bdd).
<?php
$reponse = $bdd->query('SELECT * FROM personne');
?>
 SELECT : en langage SQL, le premier mot indique quel type d'opération doit
effectuer MySQL. Ce mot-clé demande à MySQL d'afficher ce que contient une
table.
 * : après le SELECT, on doit indiquer quels champs MySQL doit récupérer dans la
table. Si on n'est intéressé que par les champs « nom » et « possesseur », il faudra
taper : SELECT nom, possesseur FROM personne. Si vous voulez prendre tous les
champs, tapez *.
 FROM : c'est un mot de liaison qui se traduit par « dans ». FROM fait la liaison
entre le nom des champs et le nom de la table.
 personne : c'est le nom de la table dans laquelle il faut aller chercher.
Manipulation des données en utilisant
PDO
Afficher le résultat d'une requête
<?php
……..
// Si tout va bien, on peut continuer
// On récupère tout le contenu de la table personne

$reponse = $bdd->query('SELECT * FROM personne


// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<strong>Nom</strong> : <?php echo $donnees['nom']; ?><br />
<strong>Prénom</strong> : <?php echo $donnees[‘prenom']; ?>,
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>

 $reponse contenait toute la réponse de MySQL en vrac, sous forme d'objet.


 $donnees est un array renvoyé par le fetch(). Chaque fois qu'on fait une boucle, fetch va
chercher dans $reponse l'entrée suivante et organise les champs dans l'array $donnees.
Manipulation des données en utilisant
PDO
Les critères de sélection
Il est possible de filtrer et trier très facilement vos données. Nous allons nous
intéresser ici aux mots-clés suivants du langage SQL :
 WHERE : trier les données.
$reponse = $bdd->query('SELECT prenom FROM personne WHERE nom=\'Patrick\'');
 ORDER BY: ordonner les résultats.
$reponse = $bdd->query('SELECT nom, prix FROM jeux_video ORDER BY prix');
 LIMIT: sélectionner qu'une partie des résultats.
$reponse = $bdd->query('SELECT nom FROM personne LIMIT 0, 10');

Construire des requêtes en fonction de variables

<?php
$reponse = $bdd->query('SELECT nom FROM jeux_video WHERE possesseur=\'' .
$_GET['possesseur'] . '\'');
?>

La mauvaise idée : concaténer une variable dans une requête


Manipulation des données en utilisant
PDO
les requêtes préparées

<?php
$req = $bdd->prepare('SELECT nom FROM jeux_video WHERE
possesseur = ? AND prix <= ?');
$req->execute(array($_GET['possesseur'], $_GET['prix_max']));
?>
Manipulation des données en utilisant
PDO
Ajouter des données
La requête INSERT INTO permet d'ajouter une entrée

<?php
……
// On ajoute une entrée dans la table jeux_video
$bdd->exec('INSERT INTO jeux_video(nom, possesseur, console, prix,
nbre_joueurs_max, commentaires) VALUES(\'Battlefield 1942\', \'Patrick\', \'PC\',
45, 50, \'2nde guerre mondiale\')');

echo 'Le jeu a bien été ajouté !';


?>
Manipulation des données en utilisant
PDO
Insertion de données variables grâce à une requête préparée

<?php
$req = $bdd->prepare('INSERT INTO jeux_video(nom, possesseur, console, prix,
nbre_joueurs_max, commentaires) VALUES(:nom, :possesseur, :console, :prix,
:nbre_joueurs_max, :commentaires)');
$req->execute(array(
'nom' => $nom,
'possesseur' => $possesseur,
'console' => $console,
'prix' => $prix,
'nbre_joueurs_max' => $nbre_joueurs_max,
'commentaires' => $commentaires
));
echo 'Le jeu a bien été ajouté !';
?>
Manipulation des données en utilisant
PDO
Modifier des données
La requête UPDATE permet de modifier une entrée
<?php
$bdd->exec('UPDATE jeux_video SET prix = 10, nbre_joueurs_max = 32
WHERE nom = \'Battlefield 1942\'');
?>

Le mot-clé SET, qui sépare le nom de la table de la liste des champs à modifier.
Avec une requête préparée
<?php
$req = $bdd->prepare('UPDATE jeux_video SET prix = :nvprix, nbre_joueurs_max =
:nv_nb_joueurs WHERE nom = :nom_jeu');
$req->execute(array(
'nvprix' => $nvprix,
'nv_nb_joueurs' => $nv_nb_joueurs,
'nom_jeu' => $nom_jeu
));
?>
Manipulation des données en utilisant
PDO
Supprimer des données

DELETE, Rapide et simple à utiliser, elle est quand même un poil dangereuse : après
suppression, il n'y a aucun moyen de récupérer les données,

DELETE FROM jeux_video WHERE nom='Battlefield 1942'

Vous pouvez là encore passer par exec() si vous voulez exécuter une requête bien
précise, ou bien utiliser une requête préparée si votre requête dépend de variables.
Une transaction complète avec PDO
<?php
Try {
//on tente d'exécuter les requêtes suivantes dans une transactions
//on lance la transaction
$pdo->beginTransaction();
//nos 3 requêtes
$pdo->query('SELECT * FROM machin WHERE bidule = \'truc\'');
$pdo->query('INSERT INTO machin SET bidule = \'truc\', chose = \'moi\'');
$pdo->query('UPDATE machin SET nombre = nombre + 1');
//si jusque là tout se passe bien on valide la transaction
$pdo->commit();
//on affiche un petit message de confirmation
echo 'Tout s\'est bien passé.';
}
catch(Exception $e) //en cas d'erreur
{
//on annule la transation
$pdo->rollback();
//on affiche un message d'erreur ainsi que les erreurs
echo 'Tout ne s\'est pas bien passé, voir les erreurs ci-dessous<br />';
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
//on arrête l'exécution s'il y a du code après
exit(); }

Vous aimerez peut-être aussi