PHP-də PDO-da Pozisiyaya əsaslanan Placeholder-lər
Gəlin pozisiyaya əsaslanan placeholder-lər ilə necə işləməyi araşdıraq. Tutaq ki, sorğuya əlavə etmək istədiyimiz iki dəyişənimiz var:
<?php
$min = 1;
$max = 5;
?>
Tutaq ki, dəyişənlərimizi aşağıdakı kimi əlavə etmək istəyirik:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Lakin, bunu belə etmək təhlükəsiz deyil. Buna görə də, dəyişənləri birbaşa əlavə etmək əvəzinə, onları sual işarələri olan pozisiyaya əsaslanan placeholder-lər ilə əvəz edək:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
İndi sorğunu hazırlayacaq əmri yerinə yetirək:
<?php
$res = $pdo->prepare($sql);
?>
İndi sorğunu yerinə yetirək, ona dəyişənlərimizi ehtiva edən massivi parametr kimi ötürək. Bununla da dəyişənlər massivdə göstərildiyi qaydada sorğuya daxil ediləcək:
<?php
$res->execute([$min, $max]);
?>
Bundan sonra sorğunun nəticəsini əldə edə bilərik:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Gəlin hamısını birləşdirək və aşağıdakı kodu əldə edək:
<?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);
}
?>
Dəyişənlər verilmişdir:
<?php
$age = 30;
$salary = 1000;
?>
Yaşı və ya maaşı dəyişənlərdə verilmiş dəyərlərə bərabər olan bütün istifadəçiləri tapın.
Kodunuzda SQL-injeksiya etməyə çalışın. Əmin olun ki, bu, keçməyəcək.