Pozicijski ograde v PDO v PHP

Poglejmo, kako delati s pozicijskimi ogradami. Recimo, da imamo dve spremenljivki, ki ju želimo vstaviti v poizvedbo:

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

Recimo, da želimo vstaviti naši spremenljivki na naslednji način:

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

Toda to ni varno. Zato namesto neposredne vstavitve spremenljivk zamenjajmo s pozicijskimi ogradami, ki so predstavljene z vprašaji:

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

Zdaj izvedimo ukaz, ki pripravi poizvedbo:

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

Zdaj izvedimo poizvedbo in ji posredujemo parameter kot seznam, ki vsebuje naši spremenljivki. Pri tem se bodo spremenljivke vstavile v poizvedbo v takem zaporedju, kot so navedene v seznamu:

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

Po tem lahko dobimo rezultat poizvedbe:

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

Zberimo vse skupaj in dobimo naslednjo kodo:

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

Podane so spremenljivke:

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

Poiščite vse uporabnike, katerih starost ali plača sta enaki vrednostim, podanim v spremenljivkah.

Задание 2

Poskusite izvesti SQL-injekcijo v vašo kodo. Prepričajte se, da ne bo uspela.