⊗ppSpPDPP 72 of 95 menu

პოზიციური პლეისჰოლდერები 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-ინექციის ჩატარება თქვენს კოდში. დარწმუნდით, რომ ის არ იმუშავებს.

bnuzcsbyms