Tutti e due. Le istruzioni preparate ti proteggeranno dalle iniezioni SQL se e solo se le utilizzi in modo corretto. Il solo "usare" le istruzioni preparate non aiuta se stai ancora interpolando variabili per nomi di tabelle/colonne, ad esempio.
$stmt = "SELECT * FROM $table WHERE $column = ?"; //not good...