Pozičné viazanie premenných v PDO v PHP
Premenné je možné viazať na dopyt jednu po druhej.
To sa robí pomocou metódy bindValue.
Potom sa pripravený dopyt vykoná, ale
v tomto prípade sa do execute nič neodovzdáva.
Takéto viazanie umožňuje presne určiť typ premennej, čím ruší automatické zabalenie do úvodzoviek pre číselné hodnoty. Pozrime sa, ako sa to robí. Nech máme dve premenné, reťazcovú a číselnú:
<?php
$name = 'name1';
$age = 25;
?>
Pripravíme dopyt:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Teraz viažeme premenné na dopyt pomocou
metódy bindValue.
V prvom parametri metódy sa uvádza
číslo pozície v dopyte, v druhom
parametri - názov premennej,
a v treťom sa uvádza typ premennej (číselný
alebo reťazcový):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Vykonáme dopyt:
<?php
$res->execute();
?>
Pozrime sa na výsledok:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Sú dané premenné:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Získajte používateľov, ktorých meno sa zhoduje s hodnotou prvej alebo druhej premennej.
Sú dané premenné:
<?php
$age1 = 21;
$age2 = 22;
?>
Získajte používateľov, ktorých vek sa zhoduje s hodnotou prvej alebo druhej premennej.