Posisionale plekhouers in PDO in PHP
Kom ons kyk hoe om met posisionale plekhouers te werk. Gestel ons het twee veranderlikes wat ons in die navraag wil invoeg:
<?php
$min = 1;
$max = 5;
?>
Gestel ons wil ons veranderlikes op die volgende manier invoeg:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Dit is egter nie veilig om so te doen nie. Daarom, in plaas daarvan om veranderlikes direk in te voeg, vervang ons dit met posisionale plekhouers, wat vraagtekens is:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Laat ons nou die opdrag uitvoer wat die navraag sal voorberei:
<?php
$res = $pdo->prepare($sql);
?>
Laat ons nou die navraag uitvoer deur 'n skikkel, wat ons veranderlikes bevat, as parameters deur te gee. Die veranderlikes sal in die navraag ingevoeg word in die volgorde waarin hulle in die skikkel gespesifiseer is:
<?php
$res->execute([$min, $max]);
?>
Daarna kan ons die resultaat van die navraag kry:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Laat ons alles bymekaar sit en die volgende kode kry:
<?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);
}
?>
Gegewe veranderlikes:
<?php
$age = 30;
$salary = 1000;
?>
Vind alle gebruikers waarvan die ouderdom of salaris gelyk is aan die waardes wat in die veranderlikes gespesifiseer is.
Probeer om 'n SQL-inspuiting in jou kode uit te voer. Maak seker dat dit nie sal slaag nie.