Poziční vazba proměnných v PDO v PHP
Proměnné lze k dotazu vázat jednu po druhé.
To se provádí pomocí metody bindValue.
Poté je získaný dotaz proveden, ale
v tomto případě se do execute nic nepředává.
Tato vazba umožňuje přesně určit typ proměnné, čímž se zruší automatické obalování uvozovkami pro číselné hodnoty. Podívejme se, jak se to dělá. Předpokládejme, že máme dvě proměnné, řetězcovou a číselnou:
<?php
$name = 'name1';
$age = 25;
?>
Připravíme dotaz:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Nyní přivážeme proměnné k dotazu
pomocí metody bindValue.
V prvním parametru metody se určuje
číslo pozice v dotazu, ve druhém
parametru - název proměnné,
a ve třetím se určuje typ proměnné (číselný
nebo řetězcový):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Provedeme dotaz:
<?php
$res->execute();
?>
Podívejme se na výsledek:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Jsou dány proměnné:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Získejte uživatele, jejichž jméno se shoduje s hodnotou první nebo druhé proměnné.
Jsou dány proměnné:
<?php
$age1 = 21;
$age2 = 22;
?>
Získejte uživatele, jejichž věk se shoduje s hodnotou první nebo druhé proměnné.