Placeholder-ele poziționale în PDO în PHP

Să înțelegem cum să lucrăm cu placeholder-ele poziționale. Să presupunem că avem două variabile, pe care dorim să le inserăm în interogare:

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

Să presupunem că vrem să inserăm variabilele noastre în felul următor:

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

Totuși, acest lucru nu este sigur. Prin urmare, în loc să inserăm variabilele direct, le vom înlocui cu placeholder-e poziționale, care sunt reprezentate de semnele de întrebare:

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

Acum să executăm comanda care va pregăti interogarea:

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

Acum să executăm interogarea, transmitându-i ca parametri un array care conține variabilele noastre. În acest caz, variabilele vor fi inserate în interogare în ordinea în care sunt specificate în array:

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

După aceasta putem obține rezultatul interogării:

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

Să adunăm totul la un loc și obținem următorul cod:

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

Sunt date variabilele:

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

Găsiți toți utilizatorii, ale căror vârstă sau salariu sunt egale cu valorile specificate în variabile.

Задание 2

Încercați să efectuați o injecție SQL în codul dvs. Asigurați-vă că nu va funcționa.