Pozicionális helykitöltők a PDO-ban PHP-ben

Értsük meg, hogyan kell dolgozni a pozicionális helykitöltőkkel. Tegyük fel, hogy van két változónk, amiket be szeretnénk illeszteni a lekérdezésbe:

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

Tegyük fel, hogy a változóinkat a következő módon szeretnénk beilleszteni:

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

Ez azonban nem biztonságos. Ezért a változók közvetlen beillesztése helyett cseréljük ki őket pozicionális helykitöltőkre, amelyek kérdőjelek:

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

Most hajtsuk végre azt a parancsot, amely előkészíti a lekérdezést:

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

Most hajtsuk végre a lekérdezést úgy, hogy paraméterként átadjuk neki a változóinkat tartalmazó tömböt. Eközben a változók abban a sorrendben kerülnek be a lekérdezésbe, ahogyan a tömbben meg vannak adva:

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

Ezután megkaphatjuk a lekérdezés eredményét:

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

Gyűjtsük össze az egészet, és kapjuk a következő kódot:

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

Adottak a változók:

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

Keresse meg az összes olyan felhasználót, akinek a kora vagy a fizetése megegyezik a változókban megadott értékekkel.

Задание 2

Próbáljon meg SQL-injektálást végrehajtani a kódjában. Győződjön meg róla, hogy az nem fog sikerülni.