PHPдеги PDOда позициялуу плейсхолдерлер

Позициялуу плейсхолдерлер менен кантип иштөө керектигин карап көрөлү. Бизде сурамга киргизгибиз келген эки өзгөрмө бар дейли:

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

Биз өзгөрмөлөрбүздү төмөнкүдөй киргизгибиз келет дейли:

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

Бирок, муну кылуу коопсуз эмес. Ошондуктан, өзгөрмөлөрдү түздөн-түз киргизгендин ордуна, аларды суроо белгилери менен көрсөтүлгөн позициялуу плейсхолдерлер менен алмаштыралы:

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

Эми сурамды даярдай турган буйрукту аткаралы:

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

Эми сурамды аткарып, ага өзгөрмөлөрүбүздү камтыган массивди параметр катары берели. Бул учурда өзгөрмөлөр массивде көрсөтүлгөн тартипте сурамга киргизилет:

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

Андан кийин сурамдын натыйжасын ала алабыз:

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

Баарын чогултуп, төмөнкү кодду алабыз:

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

Өзгөрмөлөр берилген:

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

Жашы же эмгек акысы берилген өзгөрмөлөрдүн маанисине барабар болгон бардык колдонуучуларды табыңыз.

Задание 2

Кодуңузга SQL-инъекция жасап көрүңүз. Ал ишке ашпаганына ишенет.