PHP-də PDO ilə dəyişənlərin mövqeli bağlanması

Dəyişənləri sorğuya bir-bir bağlamaq olar. Bu, bindValue metodu ilə edilir. Sonra alınan sorğu icra olunur, lakin bu halda execute-ə heç nə ötürülmür.

Belə bir bağlama dəyişənin tipini dəqiq müəyyən etməyə imkan verir, rəqəmsal dəyərlər üçün avtomatik dırnaq içərisinə almağı ləğv edir. Gəlin görək bu necə edilir. Tutaq ki, bizim iki dəyişənimiz var, sətir və rəqəmsal:

php<?php
  $name = 'name1';
  $age  = 25;
?>

Gəlin sorğunu hazırlayaq:

php<?php
  $sql = 'SELECT * FROM users WHERE name=? or age=?';
  $res = $pdo->prepare($sql);
?>

İndi bindValue metodu ilə dəyişənləri sorğuya bağlayaq. Metodun birinci parametrində sorğunun mövqe nömrəsi, ikinci parametrdə - dəyişənin adı, üçüncü parametrdə isə dəyişənin tipi (rəqəmsal ya da sətir) göstərilir:

php<?php
  $res->bindValue(1, $name, PDO::PARAM_INT);
  $res->bindValue(2, $age,  PDO::PARAM_STR);
?>

Gəlin sorğunu icra edək:

php<?php
  $res->execute();
?>

Gəlin nəticəyə baxaq:

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

Dəyişənlər verilib:

php<?php
  $name1 = 'name1';
  $name2 = 'name2';
?>

Adı birinci və ya ikinci dəyişənin dəyəri ilə üst-üstə düşən istifadəçiləri əldə edin.

Задание 2

Dəyişənlər verilib:

php<?php
  $age1 = 21;
  $age2 = 22;
?>

Yaşı birinci və ya ikinci dəyişənin dəyəri ilə üst-üstə düşən istifadəçiləri əldə edin.