Pemegang Tempat Kedudukan dalam PDO di PHP

Mari kita fahami bagaimana untuk bekerja dengan pemegang tempat kedudukan. Katakan kita mempunyai dua pembolehubah yang ingin kita masukkan ke dalam pertanyaan:

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

Katakan kita ingin memasukkan pembolehubah kita seperti berikut:

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

Walau bagaimanapun, melakukan ini adalah tidak selamat. Oleh itu, daripada memasukkan pembolehubah secara langsung, gantikannya dengan pemegang tempat kedudukan, yang diwakili oleh tanda soal:

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

Sekarang, laksanakan arahan yang akan menyediakan pertanyaan:

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

Sekarang laksanakan pertanyaan, dengan menghantarnya parameter array yang mengandungi pembolehubah kita. Pada masa yang sama pembolehubah akan dimasukkan ke dalam pertanyaan dalam urutan yang dinyatakan dalam array:

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

Selepas itu, kita boleh mendapatkan hasil pertanyaan:

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

Mari kumpulkan semuanya dan kita dapatkan kod 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

Diberi pembolehubah:

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

Cari semua pengguna, yang umur atau gaji sama dengan nilai yang diberikan dalam pembolehubah.

Задание 2

Cuba lakukan suntikan SQL ke dalam kod anda. Pastikan ia tidak akan berjaya.