Ονομασμένοι Θέτοι (Placeholders) στο PDO της PHP

Για ευκολία, μπορούν να χρησιμοποιηθούν ονομασμένοι θέτοι (placeholders), όπου η σειρά των μεταβλητών στον πίνακα δεν είναι σημαντική. Ας δούμε πώς να δουλέψουμε μαζί τους.

Ας υποθέσουμε ότι έχουμε πάλι τις ακόλουθες μεταβλητές:

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;
?>

Βρείτε όλους τους χρήστες, των οποίων η ηλικία ΚΑΙ ο μισθός βρίσκονται στην περιοχή, που ορίζεται από τις τιμές των μεταβλητών.