Week 6 – INSERT & Redirect (PRG);
In week 6 voeg je data toe aan je database.
Je leert veilig INSERT-queries uitvoeren en dubbele invoer voorkomen met een redirect.
Wat moet je kennen (samenvatting)
prepare()gebruikenexecute()uitvoeren- Named placeholders (
:title) - Waarom prepared statements veilig zijn
- Redirect na POST
header("Location: ...")exit;na header
1. Prepared statements (veilig INSERT)
Uitleg
Je plaatst nooit variabelen direct in je SQL-string.
Met prepared statements scheid je SQL en data. Dat voorkomt SQL-injectie.
Wat moet je kennen
$pdo->prepare()$stmt->execute():placeholder- Associatieve array meegeven aan execute
Voorbeeld
$title = trim($_POST['title'] ?? '');
$stmt = $pdo->prepare("INSERT INTO items (title) VALUES (:title)");
$stmt->execute([
'title' => $title
]);
Onthoud:
SQL en data blijven gescheiden.
2. Waarom geen variabelen direct in SQL?
Uitleg
Als je variabelen direct in je query zet, kan een gebruiker je query manipuleren.
Fout voorbeeld
❌
$pdo->query("INSERT INTO items (title) VALUES ('$title')");
Goed voorbeeld
✅
$stmt = $pdo->prepare("INSERT INTO items (title) VALUES (:title)");
$stmt->execute(['title' => $title]);
3. Redirect na POST (PRG pattern)
Uitleg
Na een POST-request redirect je naar een andere pagina.
Zo voorkom je dat een refresh opnieuw een INSERT uitvoert.
Wat moet je kennen
header("Location: index.php")exit;- POST → Redirect → GET
Voorbeeld
header("Location: index.php");
exit;
Onthoud:
POST → INSERT → redirect → klaar.
Veelgemaakte fouten (kort)
1. Geen prepared statement gebruiken
❌ Variabele direct in SQL-string zetten
✅ Gebruik altijd prepare() en execute()
2. Geen redirect gebruiken
❌ Refresh = dubbele insert
✅ Altijd redirect na succesvolle INSERT
3. exit vergeten na header()
❌
header("Location: index.php");
✅
header("Location: index.php");
exit;