Номгузоришудаи плейсхолдерҳо дар PDO дар PHP
Барои осонӣ метавон плейсхолдерҳои номгузоришударо истифода бурд, ки дар онҳо тартиби пайравии тағирёбандаҳо дар массив муҳим нест. Биёед бубинем, ки чӣ гуна бо онҳо кор кардан мумкин аст.
Бигзор боз чунин тағирёбандаҳо дошта бошем:
<?php
$min = 1;
$max = 5;
?>
Дархости SQL-ро бо истифодаи плейсхолдерҳои номгузоришуда таҳия кунем. Синтаксиси онҳо ин аст: ду нуқта, ва пас номи плейсхолдер. Онҳоро дар дархост истифода кунем:
<?php
$sql = 'SELECT * FROM users WHERE id>:min and id<:max';
?>
Дархостро таҳия мекунем:
<?php
$res = $pdo->prepare($sql);
?>
Дархостро иҷро кунем, бо фиристодани массивҳои ассотсиатсиявӣ ба он ҳамчун параметрҳо, ки дар он калидҳо номҳои плейсхолдерҳо дар дархости SQL хоҳанд буд, ва қиматҳо - тағирёбандаҳои мувофиқ:
<?php
$res->execute([
'min' => $min,
'max' => $max
]);
?>
Метавонем натиҷаро бубинем:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Ҳамаро якҷоя гирифта, коди зеринро мегирем:
<?php
$min = 1;
$max = 5;
$sql = 'SELECT * FROM users WHERE id>:min and id<:max';
$res = $pdo->prepare($sql);
$res->execute([
'min' => $min,
'max' => $max
]);
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Тағирёбанда дода шудааст:
<?php
$age = 30;
?>
Ҳамаи корбаронро ёбед, ки синну солашон ба қимати дар тағирёбанда муайянкарда баробар аст.
Тағирёбандаҳо дода шудаанд:
<?php
$age1 = 20;
$age2 = 30;
?>
Ҳамаи корбаронро ёбед, ки синну солашон дар диапазоне, бо қиматҳои тағирёбандаҳо муайяншуда, воқеъ аст.
Тағирёбандаҳо дода шудаанд:
<?php
$age1 = 20;
$age2 = 30;
$salary1 = 1000;
$salary2 = 2000;
?>
Ҳамаи корбаронро ёбед, ки синну солашон ВА маошияшон дар диапазоне, бо қиматҳои тағирёбандаҳо муайяншуда, воқеъ аст.