Vorbereitete Anweisungen und Binding
Verwenden Sie prepare, bindParam und execute, um SQL-Injection zu verhindern.
Vorbereitete Anweisungen und Binding ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Prepared Statements?
Prepared Statements trennen die SQL-Struktur von den Daten. Benutzereingaben werden immer als Werte behandelt – niemals als SQL-Code –, wodurch SQL-Injection unmöglich wird.
prepare() + execute()
Der grundlegende Ablauf: Bereiten Sie die Abfrage mit Platzhaltern vor und führen Sie sie anschließend mit Werten aus.
<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$_POST["email"]]);
$user = $stmt->fetch();Benannte Platzhalter
Verwenden Sie zur besseren Verständlichkeit benannte Platzhalter (:name), insbesondere wenn derselbe Wert mehrfach vorkommt.
<?php
$stmt = $pdo->prepare(
"INSERT INTO users (name, email) VALUES (:name, :email)"
);
$stmt->execute([':name' => "Alice", ':email' => "alice@example.com"]);bindParam vs bindValue
bindParam bindet eine Variable per Referenz – der Wert wird zum Ausführungszeitpunkt gelesen. bindValue bindet einen Wert sofort.
<?php
$name = "Bob";
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->bindParam(":name", $name);
$name = "Carol";
$stmt->execute(); // inserts "Carol"Beispiel für bindValue
Verwenden Sie bindValue, wenn Sie den Wert zum Zeitpunkt des Bindens festschreiben möchten.
<?php
$stmt = $pdo->prepare("SELECT * FROM products WHERE price < :max");
$stmt->bindValue(":max", 50.00, PDO::PARAM_INT);
$stmt->execute();Typkonstanten
Der optionale dritte Parameter legt den Datentyp fest: PDO::PARAM_INT, PDO::PARAM_STR, PDO::PARAM_BOOL, PDO::PARAM_NULL.
Anweisungen erneut ausführen
Eine vorbereitete Anweisung kann mehrfach ausgeführt werden – die Abfrage wird auf dem Server nur einmal kompiliert.
<?php
$stmt = $pdo->prepare("INSERT INTO logs (msg) VALUES (:msg)");
foreach ($messages as $msg) {
$stmt->execute([':msg' => $msg]);
}rowCount()
Nach INSERT/UPDATE/DELETE gibt rowCount() zurück, wie viele Zeilen betroffen waren.
<?php
$stmt = $pdo->prepare("DELETE FROM users WHERE active = 0");
$stmt->execute();
echo $stmt->rowCount()." users deleted";lastInsertId()
Lesen Sie nach einem INSERT den Primärschlüssel mit Autoinkrement über $pdo->lastInsertId() aus.
<?php
$stmt = $pdo->prepare("INSERT INTO articles (title) VALUES (:t)");
$stmt->execute([':t' => "My Post"]);
$newId = $pdo->lastInsertId();Benutzereingaben niemals verketten
Schreiben Sie niemals: "SELECT * FROM users WHERE name = '".$name."'". Verwenden Sie immer Platzhalter – selbst wenn Sie die Eingabe „bereinigt“ haben.
PDOStatement-Objekt
prepare() gibt ein PDOStatement mit folgenden Methoden zurück: execute(), fetch(), fetchAll(), bindParam(), bindValue(), rowCount().
Zusammenfassung
Verwenden Sie für Abfragen mit externen Daten immer Prepared Statements. Bevorzugen Sie benannte Platzhalter. Verwenden Sie bindValue für sofort zu bindende Werte und bindParam für Bindings in Schleifen.
Kurze Überprüfung
Wann liest bindParam seinen Wert?
Häufig gestellte Fragen
Ist die Lektion „Vorbereitete Anweisungen und Binding“ kostenlos?
Ja — der vollständige Text von „Vorbereitete Anweisungen und Binding“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Vorbereitete Anweisungen und Binding“?
Verwenden Sie prepare, bindParam und execute, um SQL-Injection zu verhindern. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Vorbereitete Anweisungen und Binding“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Mit PDO eine Verbindung zu MySQL herstellen
- Vorbereitete Anweisungen und Binding
- Ergebnisse mit PDO abrufen
- Transaktionen mit PDO