Пазіцыйныя плэйсхолдары ў PDO ў PHP

Давайце разбярэмся, як працаваць з пазіцыйнымі плэйсхолдарамі. Хай у нас ёсць дзве зменныя, якія мы хацелі б уставіць у запыт:

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

Хай мы хочам уставіць нашы зменныя наступным чынам:

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

Так, аднак, рабіць не бяспечна. Таму замест таго, каб устаўляць зменныя напрямую, замянім іх на пазіцыйныя плэйсхолдары, якія прадстаўляюць сабой знакі пытанняў:

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

Цяпер выканаем каманду, якая падрыхтуе запыт:

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

Цяпер выканаем запыт, перадаўшы яму параметрамі масіў, які змяшчае нашы зменныя. Пры гэтым зменныя будуць устаўлены ў запыт у такім парадку, як яны ўказаны ў масіве:

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

Пасля гэтага можам атрымаць вынік запыту:

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

Сабярэм усё разам і атрымаем наступны код:

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

Дадзены зменныя:

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

Знайдзіце ўсіх карыстальнікаў, у якіх узрост або зарплата роўныя зададзеным у зменных значэнням.

Задание 2

Паспрабуйце правесці SQL-ін'екцыю ў ваш код. Пераканайцеся, што яна не пройдзе.