Pozicionālie placeholderi PDO PHP

Izpratīsimies, kā strādāt ar pozicionālajiem placeholderiem. Pieņemsim, ka mums ir divi mainīgie, kurus mēs vēlētos ievietot vaicājumā:

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

Pieņemsim, ka mēs vēlamies ievietot savus mainīgos šādi:

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

Tomēr to darīt nav droši. Tāpēc tā vietā, lai tieši ievietotu mainīgos, aizstāsim tos ar pozicionālajiem placeholderiem, kuri ir jautājuma zīmes:

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

Tagad izpildīsim komandu, kas sagatavos vaicājumu:

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

Tagad izpildīsim vaicājumu, padodot tam parametros massīvu, kas satur mūsu mainīgos. Šajā gadījumā mainīgie tiks ievietoti vaicājumā tādā secībā, kādā tie norādīti massīvā:

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

Pēc tam varam iegūt vaicājuma rezultātu:

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

Apkoposim visu kopā un iegūsim šādu kodu:

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

Doti mainīgie:

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

Atrodiet visus lietotājus, kuriem vecums vai alga ir vienādi ar mainīgajos norādītajām vērtībām.

Задание 2

Mēģiniet veikt SQL-injekciju savā kodā. Pārliecinieties, ka tā neizdosies.