PDO-ի պոզիցիոն փլեյսհոլդերները PHP-ում

Եկեք հասկանանք, թե ինչպես աշխատել պոզիցիոն փլեյսհոլդերների հետ: Ենթադրենք ունենք երկու փոփոխական, որոնք մենք ցանկանում ենք ներդնել հարցման մեջ.

php<?php
  $min = 1;
  $max = 5;
?>

Ենթադրենք, մենք ցանկանում ենք ներմուծել մեր փոփոխականները հետևյալ կերպ.

php<?php
  $sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>

Սակայն դա անվտանգ չէ: Ուստի փոփոխականներն ուղղակիորեն ներմուծելու փոխարեն, դրանք փոխարինենք պոզիցիոն փլեյսհոլդերներով, որոնք ներկայացնում են հարցականի նշաններ.

php<?php
  $sql = 'SELECT * FROM users WHERE id>? and id<?';
?>

Այժմ կատարենք հրամանը, որ կպատրաստի հարցումը.

php<?php
  $res = $pdo->prepare($sql);
?>

Այժմ կատարենք հարցումը՝ փոխանցելով դրան պարամետրերով մասիվ, որը պարունակում է մեր փոփոխականները: Ընդ որում փոփոխականները կներմուծվեն հարցման մեջ այն հաջորդականությամբ, ինչպես նշված են մասիվում.

php<?php
  $res->execute([$min, $max]);
?>

Դրանից հետո կարող ենք ստանալ հարցման արդյունքը.

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>

Հավաքենք ամենը միասին և ստացենք հետևյալ կոդը.

php<?php
  $min = 1;
  $max = 5;
  
  $sql = 'SELECT * FROM users WHERE id>? and id<?';
  $res = $pdo->prepare($sql);
  
  $res->execute([$min, $max]);
  
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

Տրված են փոփոխականները.

php<?php
  $age = 30;
  $salary = 1000;
?>

Գտեք բոլոր օգտատերերին, որոնց տարիքը կամ աշխատավարձը հավասար են տրված փոփոխականների արժեքներին:

Задание 2

Փորձիր կատարել SQL-ինժեկցիա ձեր կոդում: Համոզվեք, որ այն չի հաջողվի: