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
$min = 1;
$max = 5;
?>
Să presupunem că vrem să inserăm variabilele noastre în felul următor:
<?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
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Acum să executăm comanda care va pregăti interogarea:
<?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
$res->execute([$min, $max]);
?>
După aceasta putem obține rezultatul interogării:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Să adunăm totul la un loc și obținem următorul cod:
<?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);
}
?>
Sunt date variabilele:
<?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.
Încercați să efectuați o injecție SQL în codul dvs. Asigurați-vă că nu va funcționa.