El uso de variables directas es vulnerable a la inyección de SQL. Así que para prevenir ataques usamos parámetros.
$result->bindParam(":id",$_POST['id'],PDO::PARAM_INT)
pero estoy confundido con respecto a la siguiente situación, tengo que usar el parámetro o el parámetro no aparece aquí.
Situation-1
Al llamar a la función
function fetch($id, $subid){
$result=$con->prepare("SELECT * FROM......WHERE id=$id AND subid=$subid")
$result->execute();
.....
}
Si ponemos un valor estático en el código, no hay comentarios del usuario, ¿qué hay de la inyección aquí?
fetch(3,4);
Situation-2
La variable proviene de otra consulta
//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")
Aquí usamos una variable asociada con una base de datos directa.