Ambos. As instruções preparadas irão protegê-lo contra injeções de SQL se, e somente se, você as usar de maneira correta. Apenas 'usar' instruções preparadas não ajudará se você ainda estiver interpolando variáveis para nomes de tabelas/colunas, por exemplo.
$stmt = "SELECT * FROM $table WHERE $column = ?"; //not good...