0Pricing
PHP Academy · Lektion

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

  1. Mit PDO eine Verbindung zu MySQL herstellen
  2. Vorbereitete Anweisungen und Binding
  3. Ergebnisse mit PDO abrufen
  4. Transaktionen mit PDO
← Zurück zu PHP Academy