Placeholders posicionais no PDO em PHP

Vamos entender como trabalhar com placeholders posicionais. Suponha que temos duas variáveis que gostaríamos de inserir na consulta:

php<?php
  $min = 1;
  $max = 5;
?>

Suponha que queremos inserir nossas variáveis da seguinte forma:

php<?php
  $sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>

No entanto, isso não é seguro. Portanto, em vez de inserir as variáveis diretamente, vamos substituí-las por placeholders posicionais, que são representados por pontos de interrogação:

php<?php
  $sql = 'SELECT * FROM users WHERE id>? and id<?';
?>

Agora, vamos executar o comando que preparará a consulta:

php<?php
  $res = $pdo->prepare($sql);
?>

Agora, execute a consulta, passando como parâmetros um array contendo nossas variáveis. Neste caso, as variáveis serão inseridas na consulta na ordem em que estão especificadas no array:

php<?php
  $res->execute([$min, $max]);
?>

Depois disso, podemos obter o resultado da consulta:

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>

Vamos juntar tudo e obter o seguinte código:

php<?php
  $min = 1;
  $max = 5;
  
  $sql = 'SELECT * FROM users WHERE id>? and id<?';
  $res = $pdo->prepare($sql);
  
  $res->execute([$min, $max]);
  
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

São dadas as variáveis:

php<?php
  $age = 30;
  $salary = 1000;
?>

Encontre todos os usuários cuja idade ou salário sejam iguais aos valores definidos nas variáveis.

Задание 2

Tente realizar uma injeção SQL no seu código. Certifique-se de que ela não será bem-sucedida.