Placeholder Posisional di PDO di PHP

Mari kita pahami cara bekerja dengan placeholder posisional. Misalkan kita memiliki dua variabel, yang ingin kita sisipkan ke dalam kueri:

php<?php
  $min = 1;
  $max = 5;
?>

Misalkan kita ingin menyisipkan variabel kita sebagai berikut:

php<?php
  $sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>

Namun, melakukan hal seperti ini tidak aman. Oleh karena itu, alih-alih menyisipkan variabel secara langsung, gantilah dengan placeholder posisional, yang direpresentasikan dengan tanda tanya:

php<?php
  $sql = 'SELECT * FROM users WHERE id>? and id<?';
?>

Sekarang jalankan perintah yang mempersiapkan kueri:

php<?php
  $res = $pdo->prepare($sql);
?>

Sekarang jalankan kueri, dengan meneruskan parameter array yang berisi variabel kita. Dalam hal ini variabel akan disisipkan ke dalam kueri sesuai urutan yang ditentukan dalam array:

php<?php
  $res->execute([$min, $max]);
?>

Setelah itu, kita bisa mendapatkan hasil kueri:

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

Mari kumpulkan semuanya dan kita dapatkan kode berikut:

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

Diberikan variabel:

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

Temukan semua pengguna, yang usia atau gajinya sama dengan nilai yang diberikan dalam variabel.

Задание 2

Cobalah lakukan SQL-injection pada kode Anda. Pastikan itu tidak akan berhasil.