Prepared statements en binding
Gebruik prepare, bindParam en execute om SQL-injectie te voorkomen.
Prepared statements en binding is een gratis PHP Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject PHP Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus PHP Academy bevat in totaal 4 lessen.
Waarom voorbereide statements?
Voorbereide statements scheiden de SQL-structuur van de gegevens. Gebruikersinvoer wordt altijd als een waarde behandeld — nooit als SQL-code — waardoor SQL-injectie onmogelijk is.
prepare() + execute()
Basisstroom: bereid voor met plaatshouders en voer daarna uit met waarden.
<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$_POST["email"]]);
$user = $stmt->fetch();Benoemde plaatshouders
Gebruik benoemde plaatshouders (:name) voor duidelijkheid, vooral wanneer dezelfde waarde meerdere keren voorkomt.
<?php
$stmt = $pdo->prepare(
"INSERT INTO users (name, email) VALUES (:name, :email)"
);
$stmt->execute([':name' => "Alice", ':email' => "alice@example.com"]);bindParam versus bindValue
bindParam koppelt een variabele via verwijzing — de waarde wordt gelezen tijdens het uitvoeren. bindValue koppelt een waarde onmiddellijk.
<?php
$name = "Bob";
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->bindParam(":name", $name);
$name = "Carol";
$stmt->execute(); // inserts "Carol"Voorbeeld met bindValue
Gebruik bindValue wanneer je de waarde op het moment van koppelen wilt vastleggen.
<?php
$stmt = $pdo->prepare("SELECT * FROM products WHERE price < :max");
$stmt->bindValue(":max", 50.00, PDO::PARAM_INT);
$stmt->execute();Typeconstanten
De optionele derde parameter geeft het gegevenstype op: PDO::PARAM_INT, PDO::PARAM_STR, PDO::PARAM_BOOL, PDO::PARAM_NULL.
Instructies opnieuw uitvoeren
Een voorbereide instructie kan meerdere keren worden uitgevoerd — de query wordt één keer op de server gecompileerd.
<?php
$stmt = $pdo->prepare("INSERT INTO logs (msg) VALUES (:msg)");
foreach ($messages as $msg) {
$stmt->execute([':msg' => $msg]);
}rowCount()
Na INSERT/UPDATE/DELETE geeft rowCount() terug hoeveel rijen zijn gewijzigd.
<?php
$stmt = $pdo->prepare("DELETE FROM users WHERE active = 0");
$stmt->execute();
echo $stmt->rowCount()." users deleted";lastInsertId()
Haal na een INSERT de primaire sleutel met automatische nummering op met $pdo->lastInsertId().
<?php
$stmt = $pdo->prepare("INSERT INTO articles (title) VALUES (:t)");
$stmt->execute([':t' => "My Post"]);
$newId = $pdo->lastInsertId();Gebruikersinvoer nooit samenvoegen
Doe dit nooit: "SELECT * FROM users WHERE name = '".$name."'". Gebruik altijd plaatshouders — ook als je de invoer hebt "geschoond".
PDOStatement-object
prepare() geeft een PDOStatement terug met: execute(), fetch(), fetchAll(), bindParam(), bindValue(), rowCount().
Samenvatting
Gebruik voor queries met externe gegevens altijd voorbereide statements. Geef de voorkeur aan benoemde plaatshouders. Gebruik bindValue voor onmiddellijke waarden en bindParam voor koppelingen in lussen.
Kennischeck
Wanneer leest bindParam zijn waarde?
Leer PHP met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 49
- Lessen
- 195
Veelgestelde vragen
Is de les “Prepared statements en binding” gratis?
Ja — de volledige tekst van “Prepared statements en binding” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus PHP Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus PHP Academy bevat in totaal 4 lessen.
Wat leer ik in “Prepared statements en binding”?
Gebruik prepare, bindParam en execute om SQL-injectie te voorkomen. Je oefent met PHP Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met PHP Academy te beginnen?
Ervaring vooraf is niet nodig. PHP Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Prepared statements en binding”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over PHP Academy?
Ja. Elke les over PHP Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Verbinding maken met MySQL met PDO
- Prepared statements en binding
- Resultaten ophalen met PDO
- Transacties met PDO