PHP - MySQL N°2

publicité
PHP – MySQL
N°2
IUT MMI TOULON
2016 - 2017
Base de données :
Utilisation avec PHP
Se connecter à la base de données
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.
- 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 (PHP Data Objects) :
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.
Comparatif des 2 extensions
Normalement, 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é.
L’utilisation de la BD avec PHP se fait en 5 étapes :
- Connexion
- Sélection de la BD
- Requête
- Exploitation des résultats
- Fermeture de la connexion
Structure des classes de PDO
PDO propose 3 classes :
- PDO lien à la BD
- PDOStatement : requêtes et leurs résultats
-PDOException : pour la gestion des erreurs
Se connecter à MySQL avec PDO
Nous allons avoir besoin de 4 renseignements :
Le nom de l'hôte : c'est l'adresse de l'ordinateur
où MySQL est installé.
Si MySQL est installé sur le même ordinateur
que PHP :
localhost
Se connecter à MySQL avec PDO
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.
Le mot de passe : Renseignez-vous auprès de
votre hébergeur.
Se connecter à MySQL avec PDO
Se connecter à MySQL via PDO sur la base test :
<?php
$bdd = new PDO('mysql:host=localhost;
dbname=test‘, 'root', '');
?>
Se connecter à MySQL avec PDO
Lorsque votre site sera en ligne, vous aurez
sûrement un nom d'hôte différent ainsi qu'un
login et un mot de passe comme ceci :
<?php
$bdd =
new PDO('mysql:host=sql.hebergeur.com;
dbname=mabase', 'pierre.durand', 's3cr3t');
?>
Tester la présence d'erreurs
<?php
try {
$pdo_options[PDO::ATTR_ERRMODE] =
PDO::ERRMODE_EXCEPTION;
$bdd = new
PDO('mysql:host=localhost;dbname=test', 'root', '',
$pdo_options);
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage()); }
?>
Récupérer des données :
Pour récupérer des informations de la base de
données, nous avons besoin de notre objet qui
représente la connexion à la base :
$bdd.
<?php
$reponse = $bdd->query('Tapez votre requête SQL ici');
?>
On demande ainsi à effectuer une requête sur la base
de données.
"query" en anglais signifie "requête".
Effectuons la requête :
<?php
$reponse = $bdd->query('SELECT * FROM jeux_video');
?>
$reponse contient maintenant la réponse de MySQL
Le problème, c'est que $reponse contient quelque
chose d'inexploitable. MySQL nous renvoie beaucoup
d'informations et il faut les organiser.
Pour récupérer une entrée, on prend la réponse de MySQL
et on y exécute fetch(), ce qui nous renvoie la première
ligne.
$donnees = $reponse->fetch();
$donnees est un tableau (array) qui contient champ par
champ les valeurs de la première entrée.
Par exemple, si vous vous intéressez au champ console,
vous utiliserez l'array :
$donnees['console'].
Il faudra faire une boucle pour parcourir chaque entrée une
à une. A chaque fois que vous appellerez $reponse->fetch(),
vous passez à l'entrée suivante.
A la fin de la requette, il faut ajouter :
$reponse->closeCursor();
Vous devez effectuer cet appel à closeCursor() à
chaque fois que vous avez fini de traiter le retour
d'une requête afin d'éviter d'avoir des problèmes
à la requête suivante.
Cela signifie qu'on a terminé le travail sur la
requête.
Exécuter une requête sans retour :
Qu'est-ce que j'appelle une requête sans retour ?
C'est une requête qui ne retourne pas de données.
Par exemple, les requêtes qui suppriment,
modifient ou insèrent des données.
Les requêtes qui retournent des données sont
celles qui commencent par "SELECT ...".
Exécuter une requête sans retour :
Pour ce type de requête, il faut utiliser la méthode
exec(), qui retourne le nombre de ligne affectées.
<?php
// Connexion à la base de données
require 'sqlconnect.php';
$sql = 'DELETE FROM accouns WHERE type = "member"';
$nb = $bdd->exec($sql);
echo $nb.' membres ont été supprimés.';
?>
La variable $nb contient le nombre de lignes affectées (dans
ce cas, supprimées) via notre requête.
Téléchargement
Study collections