Позиционная привязка переменных в PDO в PHP
Можно привязывать переменные к запросу по одной.
Это делается с помощью метода bindValue.
Затем полученный запрос исполняют, но
в этом случае в execute ничего не передается.
Такая привязка позволяет точно указать тип переменной, отменяя автооборачивание в кавычки для числовых значений. Давайте посмотрим, как это делается. Пусть у нас есть две переменные, строковая и числовая:
<?php
$name = 'name1';
$age = 25;
?>
Подготовим запрос:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Теперь привяжем переменные к запросу с
помощью метода bindValue.
В первом параметре метода указывается
номер позиции в запросе, во втором
параметре - имя переменной,
а в третьем указывается тип переменной (числовой
или строковый):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Выполним запрос:
<?php
$res->execute();
?>
Посмотрим на результат:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Даны переменные:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Получите юзеров, у которых имя совпадает со значением одной или второй переменной.
Даны переменные:
<?php
$age1 = 21;
$age2 = 22;
?>
Получите юзеров, у которых возраст совпадает со значением одной или второй переменной.