Module MySQL PDO
Module d'interface de connexion MYSQL pour BDD
PDO (PHP Data Objects) est une extension de PHP qui permet de se
connecter à une base de données, comme MySQL, de manière simple, sécurisée et
standardisée.
Elle fournit une interface unique pour interagir avec différentes bases de données (MySQL, PostgreSQL, SQLite, etc.), ce qui facilite la maintenance et la portabilité du code.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=ma_base", "user", "password");
?>
Pourquoi utiliser PDO ?
- Sécurité : protection contre les injections SQL grâce aux requêtes préparées
- Compatibilité : fonctionne avec plusieurs systèmes de bases de données
- Simplicité : API claire et homogène
- Performance : gestion optimisée des requêtes
Fonctionnement
Une connexion PDO se fait en 3 étapes principales :
- Définir les paramètres de connexion (serveur, base, utilisateur, mot de passe)
- Créer une instance
PDO - Exécuter des requêtes (préparées ou directes)
Connexion MySQL avec PDO
Ce module permet d'établir une connexion sécurisée à une base de
données MySQL en utilisant l'extension PDO (PHP Data Objects).
Les paramètres de connexion (serveur, utilisateur, mot de passe, base de données) sont définis en amont puis utilisés pour créer une instance PDO.
<?php
$MYSQL_SERVER = "localhost";
$MYSQL_USERNAME = "phpmyadmin";
$MYSQL_PASSWORD = "xxxxxxxxxx";
$MYSQL_DATABASE_EDELWEISS = "edelweiss";
$dsn = 'mysql:host='.$MYSQL_SERVER.';dbname='.$MYSQL_DATABASE_EDELWEISS.';charset=utf8mb4';
$username = $MYSQL_USERNAME;
$password = $MYSQL_PASSWORD;
if (defined('Pdo\\Mysql::ATTR_INIT_COMMAND')) {
$initCommand = Pdo\Mysql::ATTR_INIT_COMMAND;
} else {
$initCommand = PDO::MYSQL_ATTR_INIT_COMMAND;
}
$options = [
$initCommand => "SET NAMES utf8mb4"
];
try
{
$pdo = new PDO($dsn, $username, $password, $options);
}
catch (PDOException $e)
{
die('Erreur de connexion : ' . $e->getMessage());
}
?>
- $MYSQL_SERVER : adresse du serveur MySQL
- $MYSQL_USERNAME : identifiant de connexion
- $MYSQL_PASSWORD : mot de passe
- $MYSQL_DATABASE_EDELWEISS : nom de la base
- $dsn : chaîne de connexion PDO
- $options : configuration (encodage UTF-8MB4) avec support de la syntaxe pour PHP 8.5+
die().
Privilégiez un système de logs sécurisé.
Connexion Multi-bases MySQL avec PDO
Il vous est possible avec ce code ci-dessous d'étendre le module en vous permettant
d'établir une ou plusieurs connexions à des bases de données en utilisant PDO.
Chaque connexion est indépendante et doit être clairement identifiée par une variable distincte.
<?php
// ----------------------
// 🔹 Base principale
// ----------------------
$MYSQL_SERVER_MAIN = "localhost";
$MYSQL_USERNAME_MAIN = "phpmyadmin";
$MYSQL_PASSWORD_MAIN = "xxxxxxxxxx";
$MYSQL_DATABASE_MAIN = "edelweiss";
$dsn1 = 'mysql:host='.$MYSQL_SERVER_MAIN.';dbname='.$MYSQL_DATABASE_MAIN.';charset=utf8mb4';
try {
$pdo = new PDO($dsn1, $MYSQL_USERNAME_MAIN, $MYSQL_PASSWORD_MAIN, [
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4'
]);
} catch (PDOException $e) {
die('Erreur connexion principale : ' . $e->getMessage());
}
// ----------------------
// 🔹 Base secondaire
// ----------------------
$MYSQL_SERVER_SECOND = "localhost";
$MYSQL_USERNAME_SECOND = "phpmyadmin";
$MYSQL_PASSWORD_SECOND = "xxxxxxxxxx";
$MYSQL_DATABASE_SECOND = "autre_base";
$dsn2 = 'mysql:host='.$MYSQL_SERVER_SECOND.';dbname='.$MYSQL_DATABASE_SECOND.';charset=utf8mb4';
try {
$pdo2 = new PDO($dsn2, $MYSQL_USERNAME_SECOND, $MYSQL_PASSWORD_SECOND, [
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4'
]);
} catch (PDOException $e) {
die('Erreur connexion secondaire : ' . $e->getMessage());
}
?>
Chaque variable ($pdo, $pdo2, etc.) représente une connexion différente.
Il est donc possible d’interroger plusieurs bases de données dans un même projet.
- $pdo : connexion principale
- $pdo2 : connexion secondaire
- Chaque connexion utilise son propre DSN ($dsn1 et $dsn2)