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
Fout
$pdo->query("INSERT INTO items (title) VALUES ('$title')");
Goed voorbeeld
Beter
$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()
Fout
header("Location: index.php");
Beter
header("Location: index.php");
exit;