Позиционо placeholders во PDO во PHP
Ајде да разбереме како да работиме со позиционо placeholders. Нека имаме две променливи, кои би сакале да ги вметнеме во барањето:
<?php
$min = 1;
$max = 5;
?>
Нека сакаме да ги вметнеме нашите променливи на следниов начин:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Меѓутоа, ова не е безбедно да се прави. Затоа, наместо директно да ги вметнуваме променливите, ќе ги замениме со позиционо placeholders, кои се претставени со прашалници:
<?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-инјекција во вашиот код. Проверете дека таа нема да помине.