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<?php
  $min = 1;
  $max = 5;
?>

Diyelim ki değişkenlerimizi aşağıdaki şekilde eklemek istiyoruz:

php<?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<?php
  $sql = 'SELECT * FROM users WHERE id>? and id<?';
?>

Şimdi sorguyu hazırlayacak komutu çalıştıralım:

php<?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<?php
  $res->execute([$min, $max]);
?>

Bundan sonra sorgu sonucunu alabiliriz:

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>

Hepsini bir araya getirelim ve aşağıdaki kodu elde edelim:

php<?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);
  }
?>
Задание 1

Aşağıdaki değişkenler verilmiştir:

php<?php
  $age = 30;
  $salary = 1000;
?>

Yaşı veya maaşı verilen değişken değerlerine eşit olan tüm kullanıcıları bulun.

Задание 2

Kodunuza bir SQL enjeksiyonu denemesi yapın. Bunun başarısız olacağından emin olun.