[Web] PHP et SQL : faire des requêtes grâce à PDO

Bonjour, aujourd’hui vous allez apprendre à récupérer les données d’une base avec PHP grâce à l’objet PDO.

Pré-requis : connaitre les requêtes SQL et les bases de PHP

Connexion à la base de données

Nous allons commencer par instancier l’objet PDO, en lui donnant les informations permettant de se connecter à notre base de données. Je vais vous montrer pour MYSQL mais cela fonctionne également pour d’autres SGBD(PostGreSQL…).

$bdd = new PDO('mysql:host=localhost;dbname=cash-note;charset=utf8', 'root', '');

Pour cela il lui faut, dans le 1er paramètre, une chaîne qui contient l’hôte(adresse IP du poste avec la bdd, ici localhost), le nom de la base de données, et le charset;
et en 2ème et 3ème paramètres les identifiants pour se connecter à la base.

On écrit ça pour afficher correctement les erreurs :

try {
    $bdd = new PDO('mysql:host=localhost;dbname=argent;charset=utf8', 'root', '');
}
catch(Exception $e){
    die ('Ereur :'. $e->getMessage());
}

Une fois que ce code est écrit en haut du fichier PHP, on peut faire autant de requêtes que l’on veut.


On utilisera 2 méthodes selon le type de requête SQL.
Si l’on fait une requête SELECT on utilisera $bdd->query(…),
alors que pour une requête INSERT, UPDATE, ou DELETE on utilisera exec().

Requête SELECT:

Soit on fait directement la requête dans la fonction query :

$reponse = $bdd->query("SELECT * FROM categorie");

Soit on la met dans une variable :

$query_categorie = "SELECT * FROM categorie";
$reponse = $bdd->query($query_categorie);

Ensuite on a besoin de faire un fetch() sur l’objet $reponse, pour aller chercher dans la base de données.

$data = $reponse->fetch();

Donc $data contient le résultat de notre requête SQL.

Requête SELECT, UPDATE OU DELETE :

Cette fois on utilise exec(). De la même manière on peut exécuter la requête directement ou depuis une variable

$bdd->exec("DELETE * FROM categorie WHERE id=1");
//ou
$query_delete = "DELETE * FROM categorie WHERE id=1";
$bdd->exec($query_delete);

Ici pas besoin de faire fetch, puisqu’on ne va pas récupérer de données dans la base, on va seulement insérer/modifier/supprimer des lignes.
Exec() renvoie le nombre de lignes modifiées avec succès, ou 0 si ça a échoué.

Laisser un commentaire