Muutujate positsiooniline sidumine PDO-s PHP-s

Muutujaid saab päringuga ükshaaval siduda. Seda tehakse meetodi bindValue abil. Seejärel täidetakse saadud päring, kuid sel juhul ei edastata execute-ile midagi.

Selline sidumine võimaldab täpselt määrata muutuja tüübi, tühistades automaatse jutumärkidesse panemise numbriliste väärtuste puhul. Vaatame, kuidas seda tehakse. Olgu meil kaks muutujat, string-tüüpi ja numbriline:

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

Valmistame päringu ette:

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

Nüüd seome muutujad päringuga meetodi bindValue abil. Meetodi esimeses parameetris määratakse koha number päringus, teises parameetris - muutuja nimi, ja kolmandas määratakse muutuja tüüp (numbriline või stringiline):

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

Täidame päringu:

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

Vaatame tulemust:

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

Antud muutujad:

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

Hankige kasutajad, kelle nimi ühtib ühe või teise muutuja väärtusega.

Задание 2

Antud muutujad:

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

Hankige kasutajad, kelle vanus ühtib ühe või teise muutuja väärtusega.