Leçon 6 / 8
Leçon 06 · Partie 2 — Modifier les données
UPDATE & DELETE
UPDATE : modifier des données existantes
-- Modifier l'âge d'un utilisateur spécifique
UPDATE utilisateurs
SET age = 29
WHERE id = 1;
-- Modifier plusieurs colonnes à la fois
UPDATE utilisateurs
SET nom = 'Alice Dupont', email = 'alice.dupont@ex.com'
WHERE id = 1;
TOUJOURS mettre un WHERE sur un UPDATE. Sans WHERE, tu modifies TOUS les enregistrements de la table. Toutes les lignes d'un coup. C'est irréversible.
UPDATE avec PDO
require_once 'connexion.php';
$id = (int) $_POST['id'];
$nom = trim($_POST['nom']);
$age = (int) $_POST['age'];
$stmt = $pdo->prepare(
"UPDATE utilisateurs SET nom = :nom, age = :age WHERE id = :id"
);
$stmt->execute([
':nom' => $nom,
':age' => $age,
':id' => $id,
]);
echo $stmt->rowCount() . " ligne(s) modifiée(s)";
rowCount() retourne le nombre de lignes modifiées. Utile pour savoir si la mise à jour a fonctionné.
DELETE : supprimer des enregistrements
-- Supprimer un utilisateur par son ID
DELETE FROM utilisateurs WHERE id = 3;
TOUJOURS mettre un WHERE sur un DELETE. DELETE FROM utilisateurs; sans WHERE supprime tous les enregistrements. Toute la table. Sans avertissement.
// DELETE avec PDO
require_once 'connexion.php';
$id = (int) $_POST['id'];
$stmt = $pdo->prepare("DELETE FROM utilisateurs WHERE id = :id");
$stmt->execute([':id' => $id]);
header('Location: index.php');
Interface CRUD complète
CRUD = Create, Read, Update, Delete. Ce sont les 4 opérations de base de toute application avec une BDD. Exemple : liste d'utilisateurs avec les 3 actions :
// index.php — liste avec liens Modifier et Supprimer
<?php foreach ($utilisateurs as $u): ?>
<tr>
<td><?= htmlspecialchars($u['nom']) ?></td>
<td>
<a href="modifier.php?id=<?= $u['id'] ?>">Modifier</a>
<form method="post" action="supprimer.php"
onsubmit="return confirm('Supprimer ?')">
<input type="hidden" name="id" value="<?= $u['id'] ?>"/>
<button>Supprimer</button>
</form>
</td>
</tr>
<?php endforeach; ?>
confirm() en JavaScript affiche une boîte de dialogue. L'utilisateur doit confirmer avant de supprimer. Simple mais efficace.
// À retenir
UPDATE table SET col = val WHERE id = :id— toujours avec WHEREDELETE FROM table WHERE id = :id— toujours avec WHERE- Sans WHERE sur UPDATE/DELETE = modification/suppression de TOUS les enregistrements
rowCount()— nombre de lignes affectées- CRUD = Create + Read + Update + Delete
- Demander confirmation JS avant suppression