Moin!
$query = $dbh->prepare("INSERT INTO foo (a, b) VALUES (?, ?)");
$query->execute($foo, $bar) || die $query->errstr;
> >
> > Prepared Statements sichern 100% gegen SQL-Injection ab, wenn man sie korrekt anwendet.
>
> Wie sähe denn eine nicht korrekte Anwendung aus?
Ich kann mir tausend Methoden vorstellen, die allesamt auf genau ein zentrales Fail hinauslaufen: Dynamische Generierung des mit "Prepared Statements" abzusichernden Querystrings ohne korrekte Beachtung der SQL-Syntax bzw. deren Escaping-Regeln für Dinge, die eben nicht "Daten" sind.
Beispielsweise kriegst du die Liste der Felder ja nicht per Prepared Statement dynamisch zusammengesetzt.
- Sven Rautenberg