Pozicionālie placeholderi PDO PHP
Izpratīsimies, kā strādāt ar pozicionālajiem placeholderiem. Pieņemsim, ka mums ir divi mainīgie, kurus mēs vēlētos ievietot vaicājumā:
<?php
$min = 1;
$max = 5;
?>
Pieņemsim, ka mēs vēlamies ievietot savus mainīgos šādi:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Tomēr to darīt nav droši. Tāpēc tā vietā, lai tieši ievietotu mainīgos, aizstāsim tos ar pozicionālajiem placeholderiem, kuri ir jautājuma zīmes:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Tagad izpildīsim komandu, kas sagatavos vaicājumu:
<?php
$res = $pdo->prepare($sql);
?>
Tagad izpildīsim vaicājumu, padodot tam parametros massīvu, kas satur mūsu mainīgos. Šajā gadījumā mainīgie tiks ievietoti vaicājumā tādā secībā, kādā tie norādīti massīvā:
<?php
$res->execute([$min, $max]);
?>
Pēc tam varam iegūt vaicājuma rezultātu:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Apkoposim visu kopā un iegūsim šādu kodu:
<?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);
}
?>
Doti mainīgie:
<?php
$age = 30;
$salary = 1000;
?>
Atrodiet visus lietotājus, kuriem vecums vai alga ir vienādi ar mainīgajos norādītajām vērtībām.
Mēģiniet veikt SQL-injekciju savā kodā. Pārliecinieties, ka tā neizdosies.