Beide. Vorbereitete Anweisungen schützen Sie vor SQL-Injections, wenn und nur wenn Sie sie korrekt verwenden. Vorbereitete Anweisungen einfach zu ‚verwenden' hilft nicht, wenn Sie zum Beispiel immer noch Variablen für Tabellen-/Spaltennamen interpolieren.
$stmt = "SELECT * FROM $table WHERE $column = ?"; //not good...