Académique Documents
Professionnel Documents
Culture Documents
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 :
Le langage SQL
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
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
Accéder à une base de données et d'y faire des modifications, se fait par
plusieurs façons :
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 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.
<?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
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 :
<?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
<?php
$reponse = $bdd->query('SELECT nom FROM jeux_video WHERE possesseur=\'' .
$_GET['possesseur'] . '\'');
?>
<?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\')');
<?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,
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(); }