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
$name = 'name1';
$age = 25;
?>
Valmistame päringu ette:
<?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
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Täidame päringu:
<?php
$res->execute();
?>
Vaatame tulemust:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Antud muutujad:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Hankige kasutajad, kelle nimi ühtib ühe või teise muutuja väärtusega.
Antud muutujad:
<?php
$age1 = 21;
$age2 = 22;
?>
Hankige kasutajad, kelle vanus ühtib ühe või teise muutuja väärtusega.