PHP CONNEXION BDD
1 Hypertext Preprocessor
ACCÈS AUX BASES DE DONNÉES
PHP permet un interfaçage très simple avec un grand
nombre de bases de données. Lorsqu'une base de
données n'est pas directement supportée par PHP, il
est possible d'utiliser un pilote ODBC, pilote standard
pour communiquer avec les bases de données.
Ce cours s'appuie particulièrement sur l'utilisation du
SGBD Mysql, très souvent couplé avec PHP.
L'utilisation d'un autre SGBD se fera de manière
similaire, surtout avec l'avènement de PDO (PHP
Data Objects) qui fournit une API standard d'accès
aux SGBD (donc pour MariaDB)
2
ACCÈS AUX BASES DE DONNÉES
Rappel des bases de données les plus courantes :
MySQL : libre et gratuit, c'est probablement le
SGBD le plus connu.
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
3
Microsoft SQL Server : le SGBD de Microsoft.
ACCÈS AUX BASES DE DONNÉES
4
ACCÈS AUX BASES DE DONNÉES
L'accès au SGBD s'effectue au travers d'un
ensemble logiciel qui fait la liaison entre le
langage de programmation et le SGBD : API et
pilote.
5
API : DE QUOI S'AGIT-IL ?
Une Interface de programmation d'application, une
Application Programming Interface, ou encore
API, définit les classes, méthodes, fonctions et
variables dont votre application va faire usage
pour exécuter différentes tâches. Dans le cas des
applications PHP, les communications avec une
base de données passent généralement par une
API qui est exposée dans une extension PHP.
Les API peuvent être procédurales ou orientées
objet.
6
API : DE QUOI S'AGIT-IL ?
Il existe actuellement deux API permettant de se
connecter à une base MySQL :
mysqli : Pour des projet uniquement avec MySQL
PDO : Conseillé permet de changer de SGBD
7
DÉROULEMENT D'UN ACCÈS À UN SGBD
Connexion au serveur (authentification)
Sélection d'une base de données
Passage de la requête
Fermeture de la connexion.
8
EXEMPLE
On va créer sous phpmyadmin une base de données
TESTPDO contenant une seule table CLIENT
avec deux colonnes numcli et nomcli et des
données :
Numcli nomcli
1 Dupont
2 Durand
9
EXEMPLE
On va ensuite créer un fichier PHP comportant :
1-La connexion :
$dbhost="localhost";
$dbport=3306; //MariaDB
$dbuser="root";
$dbpasswd="joliverie";
$connexion = new
PDO('mysql:host='.$dbhost.';port='.$dbport.';dbname='.$db.'', $dbuser,
$dbpasswd);
$connexion->exec("SET CHARACTER SET utf8"); 10
EXEMPLE
2 – la gestion des erreurs de connexion
try
{
…
}
catch(PDOException $e){
echo 'erreur : '.$e->getMessage();
}
11
EXEMPLE
3- récupération du contenu de la table CLIENT de
la base de données TESTPDO
$reponse = $connexion ->query('SELECT * FROM
client');
4- affichage du contenu de la requête :
$donnees = $reponse->fetch();
Récupère la ligne en cours donc il faut une boucle
pour tout afficher 12
EXEMPLE
while ($donnees=$reponse->fetch())
{
echo $donnees[‘Numcli'].'<br />';
echo $donnees[‘Nomcli'].'<br />';
}
5-Fermeture de la connexion
$connexion=null;
13
EXEMPLE
La navigateur affiche
[Link]
Si on affiche le code source :
14
LE CURSEUR
Lorsque l'on effectue une requête SELECT, on
s'attend à récupérer plusieurs enregistrements.
exemple :
SELECT id,nom FROM ma_table ;
15
LE CURSEUR
Depuis le langage de programmation, lorsque la
requête est envoyée au SGBD, on ne récupère pas
directement le résultat. On utilise un mécanisme
particulier appelée curseur.
Le curseur permet le stockage puis le traitement
ligne par ligne du résultat de la requête.
La récupération ligne par ligne utilise un
pointeur interne qui s'incrémente
automatiquement à chaque lecture d'une ligne de
résultat. Cette opération utilise l'instruction
fetch.
16
L’EXTENSION ORIENTÉE OBJET : PDO
PDO : PHP Data Objects.
PDO requiert les nouvelles fonctionnalités
orientées objet fournies par PHP 5 et donc, ne
fonctionne pas avec les versions antérieures de
PHP.
Si PDO a ses avantages, comme une API propre,
simple et portable, ses inconvénients principaux
sont qu'elle ne vous permet pas d'utiliser toutes
les fonctionnalités avancées des dernières
versions de MySQL.
17
FONCTIONS FOURNIES PAR L’API
$resultat->fetchAll() : Retourne un tableau
contenant toutes les lignes du jeu
d'enregistrements
$resultat->fetchColumn([N°]) : Retourne par
défaut la 1ière colonne sinon retourne la colonne
(N+1) d'un jeu de résultats
$resultat->fetchObjet() : Récupère la prochaine
ligne et la retourne en tant qu'objet
$nb= $resultat->rowCount( ) : compter le
nombre d’enregistrements
18