L'uso delle variabili dirette è vulnerabile a SQL injection. Quindi per prevenire gli attacchi utilizziamo i parametri.
$result->bindParam(":id",$_POST['id'],PDO::PARAM_INT)
ma sono confuso riguardo la seguente situazione, devo usare parametro o parametro non rotolare qui.
Situazione-1
Quando si chiama la funzione
function fetch($id, $subid){
$result=$con->prepare("SELECT * FROM......WHERE id=$id AND subid=$subid")
$result->execute();
.....
}
Se inseriamo il valore statico nel codice, nessun input dell'utente, per quanto riguarda l'iniezione qui?
fetch(3,4);
Situazione-2
La variabile proviene da un'altra query
//first-query
$id = $row['id']
//second-query where first query variable is used
$result1=$con->prepare("SELECT * FROM......WHERE id=$id")
//Another Example
$id=$con->lastInsertId();
$result1=$con->prepare("SELECT * FROM......WHERE id=$id")
Qui usiamo variabile associata a un database diretto.