Pozicioni plejsholderi u PDO u PHP-u

Hajde da shvatimo kako da radimo sa pozicionim plejsholderima. Pretpostavimo da imamo dve promenljive koje želimo da umetnemo u upit:

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

Pretpostavimo da želimo da umetnemo naše promenljive na sledeći način:

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

Međutim, ovo nije bezbedno raditi. Stoga ćemo, umesto direktnog umetanja promenljivih, zameniti ih pozicionim plejsholderima, koji su predstavljeni znakom pitanja:

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

Sada ćemo izvršiti komandu koja pripremi upit:

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

Sada ćemo izvršiti upit, prosledivši mu kao parametre niz koji sadrži naše promenljive. Pri tome će promenljive biti umetnute u upit onim redosledom kojim su navedene u nizu:

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

Nakon toga možemo dobiti rezultat upita:

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

Sada ćemo sve sastaviti i dobiti sledeći kod:

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

Date su promenljive:

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

Pronađite sve korisnike čiji je uzrast ili plata jednaki vrednostima datim u promenljivama.

Задание 2

Pokušajte da izvršite SQL-injekciju u vaš kod. Uverite se da neće proći.