Poziciniai placeholder'iai PDO PHP

Išsiaiškinkime, kaip dirbti su poziciniais placeholder'iais. Tarkime, kad turime du kintamuosius, kuriuos norėtume įterpti į užklausą:

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

Tarkime, kad norime įterpti savo kintamuosius taip:

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

Tačiau taip daryti nėra saugu. Todėl vietoj tiesioginio kintamųjų įterpimo, pakeiskime juos poziciniais placeholder'iais, kurie yra klaustukai:

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

Dabar vykdykime komandą, kuri paruoš užklausą:

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

Dabar vykdykime užklausą, perduodant jai parametrais masyvą, kuriame yra mūsų kintamieji. Tuo pačiu kintamieji bus įterpti į užklausą tokia tvarka, kokia jie nurodyti masyve:

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

Po to galime gauti užklausos rezultatą:

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

Sukonkretinkime viską kartu ir gausime šį 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

Duoti kintamieji:

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

Raskite visus vartotojus, kurių amžius arba atlyginimas yra lygūs nurodytoms kintamųjų reikšmėms.

Задание 2

Pabandykite atlikti SQL-injekciją į savo kodą. Įsitikinkite, kad ji nepavyks.