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
$min = 1;
$max = 5;
?>
Tarkime, kad norime įterpti savo kintamuosius taip:
<?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
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Dabar vykdykime komandą, kuri paruoš užklausą:
<?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
$res->execute([$min, $max]);
?>
Po to galime gauti užklausos rezultatą:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Sukonkretinkime viską kartu ir gausime šį 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);
}
?>
Duoti kintamieji:
<?php
$age = 30;
$salary = 1000;
?>
Raskite visus vartotojus, kurių amžius arba atlyginimas yra lygūs nurodytoms kintamųjų reikšmėms.
Pabandykite atlikti SQL-injekciją į savo kodą. Įsitikinkite, kad ji nepavyks.