Positionel binding af variabler i PDO i PHP
Man kan binde variabler til forespørgslen én ad gangen.
Dette gøres ved hjælp af metoden bindValue.
Derefter udføres den resulterende forespørgsel, men
i dette tilfælde overføres intet til execute.
Sådan binding giver mulighed for at præcist angive typen af variablen, hvilket ophæver automatisk indpakning i anførselstegn for numeriske værdier. Lad os se, hvordan det gøres. Lad os sige, at vi har to variable, en streng og en numerisk:
<?php
$name = 'name1';
$age = 25;
?>
Lad os forberede forespørgslen:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Nu binder vi variablerne til forespørgslen med
hjælp af metoden bindValue.
I den første parameter for metoden angives
positionsnummeret i forespørgslen, i den anden
parameter - variabelnavnet,
og i den tredje angives variabeltypen (numerisk
eller streng):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Lad os udføre forespørgslen:
<?php
$res->execute();
?>
Lad os se på resultatet:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Følgende variable er givet:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Hent de brugere, hvis navn matcher værdien af den ene eller den anden variabel.
Følgende variable er givet:
<?php
$age1 = 21;
$age2 = 22;
?>
Hent de brugere, hvis alder matcher værdien af den ene eller den anden variabel.