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 WHERE
  • DELETE 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