Positionsbindning av variabler i PDO i PHP
Man kan binda variabler till frågan en efter en.
Detta görs med metoden bindValue.
Sedan exekveras den resulterande frågan, men
i det här fallet skickas inget in i execute.
Denna bindning gör det möjligt att exakt specificera typen av variabel, vilket tar bort automatisk inneslutning i citattecken för numeriska värden. Låt oss se hur det går till. Låt oss säga att vi har två variabler, en sträng och en numerisk:
<?php
$name = 'name1';
$age = 25;
?>
Låt oss förbereda frågan:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Nu binder vi variablerna till frågan med
hjälp av metoden bindValue.
I den första parametern för metoden anges
positionsnumret i frågan, i den andra
parametern - variabelns namn,
och i den tredje anges variabelns typ (numerisk
eller sträng):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Låt oss exekvera frågan:
<?php
$res->execute();
?>
Låt oss titta på resultatet:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Följande variabler är givna:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Hämta användare vars namn matchar värdet på den ena eller den andra variabeln.
Följande variabler är givna:
<?php
$age1 = 21;
$age2 = 22;
?>
Hämta användare vars ålder matchar värdet på den ena eller den andra variabeln.