Іменаваныя плэйсхолдары ў PDO ў PHP

Для зручнасці можна выкарыстоўваць іменаваныя плэйсхолдары, у якіх парадак следвання зменных у масіве не важны. Давайце паглядзім, як з імі працаваць.

Хай у нас зноў ёсць наступныя зменныя:

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

Зробім SQL запыт, выкарыстаўшы іменаваныя плэйсхолдары. Іх сінтаксіс такі: двукроп'е, а потым імя плэйсхолдара. Скарыстаемся імі ў запыце:

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

Падрыхтоўваем запыт:

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

Выконваем запыт, перадаўшы яму параметрамі асцыятыўны масіў, дзе ключамі будуць імёны плэйсхолдараў у SQL запыце, а значэннямі - адпаведныя зменныя:

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

Можам паглядзець вынік:

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

Сабярэм усё разам і атрымаем наступны код:

php<?php
  $min = 1;
  $max = 5;
  
  $sql = 'SELECT * FROM users WHERE id>:min and id<:max';
  $res = $pdo->prepare($sql);
  
  $res->execute([
    'min' => $min,
    'max' => $max
  ]);
  
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

Дадзена зменная:

php<?php
  $age = 30;
?>

Знайдзіце ўсіх карыстальнікаў, у якіх узрост роўны зададзенаму ў зменнай значэнню.

Задание 2

Дадзены зменныя:

php<?php
  $age1 = 20;
  $age2 = 30;
?>

Знайдзіце ўсіх карыстальнікаў, у якіх узрост ляжыць у дыяпазоне, зададзеным значэннямі зменных.

Задание 3

Дадзены зменныя:

php<?php
  $age1 = 20;
  $age2 = 30;
  
  $salary1 = 1000;
  $salary2 = 2000;
?>

Знайдзіце ўсіх карыстальнікаў, у якіх узрост І зарплата ляжаць у дыяпазоне, зададзеным значэннямі зменных.