Poziční vazba proměnných v PDO v PHP

Proměnné lze k dotazu vázat jednu po druhé. To se provádí pomocí metody bindValue. Poté je získaný dotaz proveden, ale v tomto případě se do execute nic nepředává.

Tato vazba umožňuje přesně určit typ proměnné, čímž se zruší automatické obalování uvozovkami pro číselné hodnoty. Podívejme se, jak se to dělá. Předpokládejme, že máme dvě proměnné, řetězcovou a číselnou:

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

Připravíme dotaz:

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

Nyní přivážeme proměnné k dotazu pomocí metody bindValue. V prvním parametru metody se určuje číslo pozice v dotazu, ve druhém parametru - název proměnné, a ve třetím se určuje typ proměnné (číselný nebo řetězcový):

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

Provedeme dotaz:

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

Podívejme se na výsledek:

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

Jsou dány proměnné:

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

Získejte uživatele, jejichž jméno se shoduje s hodnotou první nebo druhé proměnné.

Задание 2

Jsou dány proměnné:

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

Získejte uživatele, jejichž věk se shoduje s hodnotou první nebo druhé proměnné.