PHPдеги PDOда позициялуу плейсхолдерлер
Позициялуу плейсхолдерлер менен кантип иштөө керектигин карап көрөлү. Бизде сурамга киргизгибиз келген эки өзгөрмө бар дейли:
<?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-инъекция жасап көрүңүз. Ал ишке ашпаганына ишенет.