პოზიციური პლეისჰოლდერები PDO-ში PHP-ში
მოდით გავარკვიოთ, როგორ ვიმუშაოთ პოზიციურ პლეისჰოლდერებთან. დავუშვათ, გვაქვს ორი ცვლადი, რომლის ჩასმაც გვსურს მოთხოვნაში:
<?php
$min = 1;
$max = 5;
?>
დავუშვათ, ჩვენ გვსურს ჩვენი ცვლადების ჩასმა შემდეგნაირად:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
ამის გაკეთება, თუმცა, არაა უსაფრთხო. ამიტომ, ცვლადების პირდაპირ ჩასმის ნაცვლად, შევცვალოთ ისინი პოზიციური პლეისჰოლდერებით, რომლებიც წარმოადგენენ კითხვის ნიშნებს:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
ახლა შევასრულოთ ბრძანება, რომელიც მოამზადებს მოთხოვნას:
<?php
$res = $pdo->prepare($sql);
?>
ახლა შევასრულოთ მოთხოვნა, გადავცეთ მას პარამეტრების სახით მასივი, რომელიც შეიცავს ჩვენს ცვლადებს. ამ შემთხვევაში ცვლადები ჩაისმება მოთხოვნაში იმ რიგითობით, როგორც ისინი მითითებულია მასივში:
<?php
$res->execute([$min, $max]);
?>
ამის შემდეგ შეგვიძლია მივიღოთ მოთხოვნის შედეგი:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
შევაგროვოთ ყველაფერი ერთად და მივიღოთ შემდეგი კოდი:
<?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);
}
?>
მოცემულია ცვლადები:
<?php
$age = 30;
$salary = 1000;
?>
იპოვეთ ყველა მომხმარებელი, რომელთა ასაკი ან ხელფასი უდრის მოცემულ ცვლადების მნიშვნელობებს.
სცადეთ SQL-ინექციის ჩატარება თქვენს კოდში. დარწმუნდით, რომ ის არ იმუშავებს.