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
$name = 'name1';
$age = 25;
?>
Valmistellaan kysely:
<?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
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Suoritetaan kysely:
<?php
$res->execute();
?>
Katsotaan tulosta:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Annetut muuttujat:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Hanki käyttäjät, joiden nimi vastaa yhden tai toisen muuttujan arvoa.
Annetut muuttujat:
<?php
$age1 = 21;
$age2 = 22;
?>
Hanki käyttäjät, joiden ikä vastaa yhden tai toisen muuttujan arvoa.