Principe

Introduction

Pour dialoguer entre les pages et la base de données, il faut connaître différentes informations :

  • Le nom de la source de données (dsn : contient le type de SGBD, l'adresse du serveur, le nom de la bdd).

  • Un login (username).

  • Un mot de passe (password).

Le protocole de dialogue est toujours le même, ouverture de la connexion, création de la requête son envoi et récupération des résultats.

MéthodeProtocole

1
<?php
2
// ouverture de la connexion
3
$dsn = 'mysql:host=localhost;dbname=bdd';
4
$username = 'root';
5
$password = '';
6
$db = new PDO($dsn, $username, $password);
7
// création de la requête
8
$requete = "SELECT * FROM auteurs";
9
// envoi de la requête et récupération du résultat
10
$liste = $db->query($requete)->fetchAll(PDO::FETCH_OBJ);

ComplémentDSN

Le DSN (data source name) correspond au nom de la source de données.

Il est constitué d'un préfixe qui est le nom du SGBD utilisé.

Dans notre cas c'est :

1
mysql

Ensuite, on trouve l'hôte sur lequel le serveur de base de données se situe.

Avec WAMP nous devons écrire :

1
 host=localhost

Et enfin, le nom de votre base de données

1
dbname=bdd

Ce qui nous donne :

1
$dsn = 'mysql:host=localhost;dbname=bdd';

Lorsque vous choisirez un hébergeur pour votre site, celui-ci vous communiquera le nom de son serveur ainsi que le nom de votre base de données.

ComplémentLogin

Le login vous sera aussi fourni par votre hébergeur. Sur WAMP, il vaut par défaut root.

1
$username = 'root';

ComplémentMot de passe

comme pour le login, le mot de passe vous sera fourni par votre hébergeur. Sur WAMP, il est vide par défaut (parfois root, sur mac par exemple)

1
$password = '';

ComplémentPDO

La connexion aux bases de données peut se réaliser en programmation orientée objet (POO) à l'aide de la classe PDO.

1
$db = new PDO(...);

$db est une nouvelle instance (un objet) de la classe PDO. C'est à dire qu'elle pourra utiliser toutes les méthodes de la classe PDO.

1
$db->query(...)->fetchAll(PDO::FETCH_OBJ);

query est une méthode de PDO qui permet d'envoyer des requêtes à la BDD.

La méthode query retourne une réponse sous forme d'un objet (de la classe PDOStatement) qui possède ses propres méthodes.

fetchAll est une de ces méthodes, elle retourne le contenu complet de la requête.

1
$db = new PDO($dsn, $username, $password);
2
// création de la requête
3
$requete = "SELECT * FROM auteurs";
4
// envoi de la requête et récupération du résultat
5
$liste = $db->query($requete)->fetchAll(PDO::FETCH_OBJ);

ComplémentOptions

Vous pouvez ajoutez des options. Par exemple, le type de codage :

1
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
2
$db = new PDO($dsn, $username, $password, $options);

Complémentquery et exec

En fonction du type de requête, il existe deux méthodes pour dialoguer avec la BDD.

Si vous voulez simplement récupérer des données (SELECT), vous pourrez utiliser query.

Si vous voulez connaître le nombre de lignes affectées par votre requête (INSERT, UPDATE, DELETE), vous pourrez utiliser exec.

Exemples :

1
$db->query("SELECT * FROM auteurs");
2
$db->exec("DELETE FROM auteurs WHERE id='1'");
3
$db->exec("UPDATE auteurs SET nom = 'Dupond' WHERE id='1'");
4
$db->exec("INSERT INTO auteurs (nom, prenom) VALUES ('dupont', 'jean')");