PHP හි PDO හි ස්ථානගත තැනීම් ස්ථාන

ස්ථානගත තැනීම් ස්ථාන සමඟ වැඩ කරන්නේ කෙසේදැයි අපි බලමු. අපට විචල්‍ය දෙකක් ඇතැයි සිතමු, අපි විමසුමට ඇතුළු කිරීමට අවශ්‍ය:

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 ආනයනයක් (injection) කිරීමට උත්සාහ කරන්න. එය සාර්ථක නොවන බවට වග බලා ගන්න.