Pozicioni plejsholderi u PDO u PHP-u
Hajde da shvatimo kako da radimo sa pozicionim plejsholderima. Pretpostavimo da imamo dve promenljive koje želimo da umetnemo u upit:
<?php
$min = 1;
$max = 5;
?>
Pretpostavimo da želimo da umetnemo naše promenljive na sledeći način:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Međutim, ovo nije bezbedno raditi. Stoga ćemo, umesto direktnog umetanja promenljivih, zameniti ih pozicionim plejsholderima, koji su predstavljeni znakom pitanja:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Sada ćemo izvršiti komandu koja pripremi upit:
<?php
$res = $pdo->prepare($sql);
?>
Sada ćemo izvršiti upit, prosledivši mu kao parametre niz koji sadrži naše promenljive. Pri tome će promenljive biti umetnute u upit onim redosledom kojim su navedene u nizu:
<?php
$res->execute([$min, $max]);
?>
Nakon toga možemo dobiti rezultat upita:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Sada ćemo sve sastaviti i dobiti sledeći kod:
<?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);
}
?>
Date su promenljive:
<?php
$age = 30;
$salary = 1000;
?>
Pronađite sve korisnike čiji je uzrast ili plata jednaki vrednostima datim u promenljivama.
Pokušajte da izvršite SQL-injekciju u vaš kod. Uverite se da neće proći.