Pozycyjne wiązanie zmiennych w PDO w PHP
Można wiązać zmienne z zapytaniem pojedynczo.
Robimy to za pomocą metody bindValue.
Następnie otrzymane zapytanie jest wykonywane, ale
w tym przypadku do execute nic nie jest przekazywane.
Takie wiązanie pozwala dokładnie określić typ zmiennej, usuwając automatyczne otaczanie cudzysłowami dla wartości liczbowych. Spójrzmy, jak to się robi. Załóżmy, że mamy dwie zmienne, łańcuchową i liczbową:
<?php
$name = 'name1';
$age = 25;
?>
Przygotujmy zapytanie:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Teraz powiążmy zmienne z zapytaniem za
pomocą metody bindValue.
W pierwszym parametrze metody określa się
numer pozycji w zapytaniu, w drugim
parametrze - nazwa zmiennej,
a w trzecim określa się typ zmiennej (liczbowy
lub łańcuchowy):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Wykonajmy zapytanie:
<?php
$res->execute();
?>
Spójrzmy na wynik:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Dane są zmienne:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Pobierz użytkowników, których imię pasuje do wartości jednej lub drugiej zmiennej.
Dane są zmienne:
<?php
$age1 = 21;
$age2 = 22;
?>
Pobierz użytkowników, których wiek pasuje do wartości jednej lub drugiej zmiennej.