Позиционно свързване на променливи в 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;
?>

Вземете потребителите, чиято възраст съвпада със стойността на едната или другата променлива.