Позиционҳои ҷойгиршавӣ дар PDO дар PHP
Биёед фаҳмем, ки чӣ гуна бо позиционҳои ҷойгиршавӣ кор кардан мумкин аст. Бигзор мо ду тағирёбанда дошта бошем, ки мо мехоҳем онҳоро ба дархост гузорем:
<?php
$min = 1;
$max = 5;
?>
Фарз мекунем, ки мо мехоҳем тағирёбандаҳои худро ба тариқи зерин гузорем:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Аммо ин кор бехатар нест. Аз ин рӯ, ба ҷои гузоштани мустақими тағирёбандаҳо, онҳоро бо позиционҳои ҷойгиршавӣ иваз мекунем, ки аломатҳои савол мебошанд:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Ҳоло амриро иҷро мекунем, ки дархостро омода мекунад:
<?php
$res = $pdo->prepare($sql);
?>
Ҳоло дархостро иҷро мекунем, ба он массивро ҳамчун параметрҳо мегузаронем, ки тағирёбандаҳои моро дар бар мегирад. Дар ин ҳолат тағирёбандаҳо ба дархост ба тартиби зерин гузошта мешаванд, ки дар массив қайд шудаанд:
<?php
$res->execute([$min, $max]);
?>
Пас аз ин мо метавонем натиҷаи дархостро гирем:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Ҳамаро якҷоя мекунем ва рамзи зеринро мегирем:
<?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);
}
?>
Тағирёбандаҳо дода шудаанд:
<?php
$age = 30;
$salary = 1000;
?>
Ҳамаи корбаронро ёбед, ки синну соли ё моҳияи онҳо ба қиматҳои дар тағирёбандаҳо муайянкардашуда баробар аст.
Санҷед, ки ба рамзи худ SQL-инъексия ворид кунед. Боварӣ ҳосил кунед, ки он муваффақ намешавад.