PDO'da Pozisyonel Yer Tutucular PHP'de
Pozisyonel yer tutucularla nasıl çalışılacağını anlayalım. Diyelim ki sorguya eklemek istediğimiz iki değişkenimiz var:
<?php
$min = 1;
$max = 5;
?>
Diyelim ki değişkenlerimizi aşağıdaki şekilde eklemek istiyoruz:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Ancak bunu yapmak güvenli değildir. Bu nedenle, değişkenleri doğrudan eklemek yerine, soru işaretleri olan pozisyonel yer tutucularla değiştirelim:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Şimdi sorguyu hazırlayacak komutu çalıştıralım:
<?php
$res = $pdo->prepare($sql);
?>
Şimdi, değişkenlerimizi içeren diziyi parametre olarak ileterek sorguyu çalıştıralım. Bu durumda değişkenler, dizide belirtildikleri sırayla sorguya eklenecektir:
<?php
$res->execute([$min, $max]);
?>
Bundan sonra sorgu sonucunu alabiliriz:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Hepsini bir araya getirelim ve aşağıdaki kodu elde edelim:
<?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);
}
?>
Aşağıdaki değişkenler verilmiştir:
<?php
$age = 30;
$salary = 1000;
?>
Yaşı veya maaşı verilen değişken değerlerine eşit olan tüm kullanıcıları bulun.
Kodunuza bir SQL enjeksiyonu denemesi yapın. Bunun başarısız olacağından emin olun.