Placeholderët Pozicional në PDO në PHP

Le të kuptojmë se si të punojmë me placeholderët pozicional. Le të themi se kemi dy variabla që dëshirojmë t'i fusim në kërkesë:

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

Le të themi se dëshirojmë t'i fusim variablat tona në mënyrën e mëposhtme:

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

Megjithatë, nuk është e sigurt ta bësh kështu. Prandaj, në vend që të futen variablat direct, le t'i zëvendësojmë me placeholderë pozicional, të cilët përfaqësohen nga shenjat e pikëpyetjes:

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

Tani le të ekzekutojmë komandën që do të përgatisë kërkesën:

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

Tani le të ekzekutojmë kërkesën, duke i kaluar si parametra nje array që përmban variablat tona. Në këtë rast variablat do të futen në kërkesë në atë rend në të cilin janë specifikuar në array:

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

Pas kësaj mund të marrim rezultatin e kërkesës:

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

Le të mbledhim të gjitha së bashku dhe të marrim kodin e mëposhtëm:

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

Janë dhënë variablat:

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

Gjeni të gjithë përdoruesit, mosha ose paga e të cilëve është e barabartë me vlerat e dhëna në variabla.

Задание 2

Përpiquni të kryeni një SQL-injection në kodin tuaj. Sigurohuni që ajo nuk do të kalojë.