Scripts et Programmation

PHP : Exemples avec PDO pour interroger une base MariaDB

Table des matières

Introduction



Dans cet article, je liste des petits bouts de fonctions pour interroger une base de données MariaDB avec PDO en PHP.
Ce mémo est là pour trouver rapidement ce dont j'ai besoin.

Le connecteur sera stocké dans $pdo et mes requêtes seront $stmt (statement)

Connexion et Déconnexion



Pour la connexion, je définis mes variables et j'ouvre la connexion avec la chaîne suivante.
Je force l'UTF8 juste après :

Code PHP :
<?php
// Database settings
$db="base";
$dbhost="localhost";
$dbport=3306;
$dbuser="user";
$dbpasswd="pass";
 
$pdo = new PDO('mysql:host='.$dbhost.';port='.$dbport.';dbname='.$db.'', $dbuser, $dbpasswd);
$pdo->exec("SET CHARACTER SET utf8");
 
?>


En fin de page, pour fermer la connexion, on peut définir la variable $pdo à null :

Code PHP :
<?php
$pdo = null;
?>


Requêtes de base



SELECT



Pour sélectionner des données :

Code PHP :
$stmt = $pdo->prepare("SELECT * FROM societe WHERE id=?");
$stmt->bindParam(1,$id);
$stmt->execute();


Dans cet exemple, c'est une requête préparée avec un id passé en paramètre. Cette méthode est sûre car elle évite les injections SQL.

Ensuite, on traite les données avec un foreach (exemple avec affichage des colonnes id :

Code PHP :
$res = $stmt->fetchAll();
foreach ( $res as $row ) {
    echo $row['id'];
}


INSERT



Une requête INSERT est beaucoup plus simple (exemple avec une requête préparée et 2 variables passées) :

Code PHP :
$stmt=$pdo->prepare("INSERT INTO journal(date, heure, message, fk_societe) VALUES (NOW(), NOW(), ?, ?);");
$stmt->bindParam(1,$message);
$stmt->bindParam(2,$sid);
$stmt->execute();



UPDATE



Une requête UPDATE est aussi simple qu'un INSERT :

Code PHP :
$stmt=$pdo->prepare("UPDATE compta SET impot=$impots WHERE fk_societe=?");
$stmt->bindParam(1,$sid);
$stmt->execute();


Ici, on a directement passé $impots car c'est un entier calculé dans une page avant donc sans risque d'injection.

DELETE



Je n'ai pas d'exemples dans mon code, mais c'est pareil que l'UPDATE et le INSERT :-)

Diverses astuces



Compter les lignes de la requête



Après exécuté un SELECT, on peut connaitre le nombre de lignes avec :

Code PHP :
$nb=$stmt->rowCount();
Cette page a été vue 23471 fois