Pozíciós változó kötés PDO-ban PHP-ben
Változókat egyenként is köthetünk a lekérdezéshez.
Ezt a bindValue metódussal tehetjük meg.
Majd a kapott lekérdezést végrehajtjuk, de
ebben az esetben a execute-nak nem adunk át semmit.
Ez a kötés lehetővé teszi a változó típusának pontos megadását, megszüntetve az automatikus idézőjelezést a numerikus értékek esetén. Nézzük meg, hogyan is történik ez. Tegyük fel, hogy van két változónk, egy sztring és egy szám:
<?php
$name = 'name1';
$age = 25;
?>
Készítsük elő a lekérdezést:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Most kössük a változókat a lekérdezéshez a
bindValue metódus segítségével.
A metódus első paraméterében a
lekérdezésben szereplő pozíció sorszáma, a második
paraméterben a változó neve,
a harmadikban pedig a változó típusa (numerikus
vagy sztring) van megadva:
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Hajtsuk végre a lekérdezést:
<?php
$res->execute();
?>
Nézzük meg az eredményt:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Adottak a változók:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Kapjuk meg azokat a felhasználókat, akiknek a neve megegyezik az egyik vagy a másik változó értékével.
Adottak a változók:
<?php
$age1 = 21;
$age2 = 22;
?>
Kapjuk meg azokat a felhasználókat, akiknek a kora megegyezik az egyik vagy a másik változó értékével.