–
1. Création de la base de données et de la
table
Avant d'écrire le code PHP, créons une base de données et une table pour stocker les données.
Exécute cette requête SQL dans MySQL :
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE utilisateurs (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
2. Formulaire HTML pour saisir les données
Ce formulaire permet à l'utilisateur d'entrer un nom et un email.
Code du formulaire ([Link])
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Insertion de données avec PDO</title>
</head>
<body>
<h2>Ajouter un utilisateur</h2>
<form action="[Link]" method="post">
<label for="nom">Nom :</label>
<input type="text" name="nom" id="nom" required>
<br><br>
<label for="email">Email :</label>
<input type="email" name="email" id="email" required>
<br><br>
<button type="submit">Ajouter</button>
</form>
</body>
</html>
3. Traitement du formulaire et insertion
dans MySQL avec PDO
Ce script récupère les données du formulaire et les insère dans la base de données.
Code PHP pour l'insertion ([Link])
<?php
// Informations de connexion à la base de données
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = '';
try {
// Connexion à la base de données avec PDO
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username,
$password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Vérifier si les données ont été soumises via POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Récupération des données du formulaire
$nom = trim($_POST['nom']);
$email = trim($_POST['email']);
// Vérification si les champs ne sont pas vides
if (!empty($nom) && !empty($email)) {
// Préparer la requête SQL avec des paramètres pour éviter les injections SQL
$sql = "INSERT INTO utilisateurs (nom, email) VALUES (:nom, :email)";
$stmt = $pdo->prepare($sql);
// Exécuter la requête avec les valeurs
$stmt->execute([
':nom' => $nom,
':email' => $email
]);
// Redirection après l'insertion
header("Location: [Link]");
exit();
} else {
echo "Veuillez remplir tous les champs.";
}
}
} catch (PDOException $e) {
echo "Erreur : " . $e->getMessage();
}
?>
Explication du code :
1. Définition des paramètres de connexion
o $host : Adresse du serveur MySQL (généralement localhost en
local).
o $dbname : Nom de la base de données à laquelle se
connecter.
o $username : Nom d'utilisateur de MySQL (root en local par
défaut).
o $password : Mot de passe MySQL (souvent vide '' en local).
2. Connexion avec PDO
o new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username,
$password)
→ Cette ligne établit la connexion à MySQL.
o charset=utf8 : Assure que les données sont bien encodées en
UTF-8.
3. Activation du mode exception
o $pdo->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
→ Permet d'afficher les erreurs SQL sous forme
d'exceptions pour un meilleur débogage.
4. Gestion des erreurs avec try ... catch
o Si la connexion échoue, une exception est levée et le
message d'erreur s'affiche grâce à $e->getMessage().
4. Page de confirmation ([Link])
Une fois les données insérées, on affiche un message de succès.
Code ([Link])
php
CopierModifier
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Succès</title>
</head>
<body>
<h2>Utilisateur ajouté avec succès !</h2>
<a href="[Link]">Retour au formulaire</a>
</body>
</html>
5. Explication du code
✅ Connexion à la base de données avec PDO
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8",
$username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Se connecte à MySQL via PDO.
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
affiche les erreurs SQL.
récupération et validation des données du formulaire
$nom = trim($_POST['nom']);
$email = trim($_POST['email']);
trim()supprime les espaces inutiles.
On vérifie que les champs ne sont pas vides.
✅ Préparation et exécution sécurisée de la requête
php
CopierModifier
$sql = "INSERT INTO utilisateurs (nom, email) VALUES
(:nom, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([':nom' => $nom, ':email' => $email]);