Позиционная привязка переменных в PDO в PHP

Можно привязывать переменные к запросу по одной. Это делается с помощью метода bindValue. Затем полученный запрос исполняют, но в этом случае в execute ничего не передается.

Такая привязка позволяет точно указать тип переменной, отменяя автооборачивание в кавычки для числовых значений. Давайте посмотрим, как это делается. Пусть у нас есть две переменные, строковая и числовая:

php<?php
  $name = 'name1';
  $age  = 25;
?>

Подготовим запрос:

php<?php
  $sql = 'SELECT * FROM users WHERE name=? or age=?';
  $res = $pdo->prepare($sql);
?>

Теперь привяжем переменные к запросу с помощью метода bindValue. В первом параметре метода указывается номер позиции в запросе, во втором параметре - имя переменной, а в третьем указывается тип переменной (числовой или строковый):

php<?php
  $res->bindValue(1, $name, PDO::PARAM_INT);
  $res->bindValue(2, $age,  PDO::PARAM_STR);
?>

Выполним запрос:

php<?php
  $res->execute();
?>

Посмотрим на результат:

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

Даны переменные:

php<?php
  $name1 = 'name1';
  $name2 = 'name2';
?>

Получите юзеров, у которых имя совпадает со значением одной или второй переменной.

Задание 2

Даны переменные:

php<?php
  $age1 = 21;
  $age2 = 22;
?>

Получите юзеров, у которых возраст совпадает со значением одной или второй переменной.