Muuttujien sidonta PDO:ssa PHP:ssä

Muuttujia voidaan sitoa kyselyyn yksi kerrallaan. Tämä tehdään bindValue-metodilla. Saatua kyselyä suoritetaan, mutta tässä tapauksessa execute:lle ei välitetä mitään.

Tällainen sidonta mahdollistaa muuttujan tyypin tarken määrittelyn, poistaen automaattisen lainausmerkeillä ympäröinnin numeerisille arvoille. Katsotaanpa, kuinka se tehdään. Oletetaan, että meillä on kaksi muuttujaa, merkkijono ja numero:

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

Valmistellaan kysely:

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

Nyt sidotaan muuttujat kyselyyn käyttämällä bindValue-metodia. Metodin ensimmäisessä parametrissa määritetään position numero kyselyssä, toisessa parametrissa - muuttujan nimi, ja kolmannessa määritetään muuttujan tyyppi (numeerinen tai merkkijono):

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

Suoritetaan kysely:

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

Katsotaan tulosta:

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

Annetut muuttujat:

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

Hanki käyttäjät, joiden nimi vastaa yhden tai toisen muuttujan arvoa.

Задание 2

Annetut muuttujat:

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

Hanki käyttäjät, joiden ikä vastaa yhden tai toisen muuttujan arvoa.