Placeholders positionnels dans PDO en PHP
Voyons comment utiliser les placeholders positionnels. Supposons que nous ayons deux variables que nous souhaitons insérer dans la requête :
<?php
$min = 1;
$max = 5;
?>
Supposons que nous voulions insérer nos variables de la manière suivante :
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Cependant, cela n'est pas sécurisé. Par conséquent, au lieu d'insérer les variables directement, remplaçons-les par des placeholders positionnels, qui sont représentés par des points d'interrogation :
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Exécutons maintenant la commande qui préparera la requête :
<?php
$res = $pdo->prepare($sql);
?>
Exécutons maintenant la requête, en lui passant en paramètres un tableau contenant nos variables. Dans ce cas, les variables seront insérées dans la requête dans l'ordre où elles sont spécifiées dans le tableau :
<?php
$res->execute([$min, $max]);
?>
Après cela, nous pouvons obtenir le résultat de la requête :
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Rassemblons tout et nous obtenons le code suivant :
<?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);
}
?>
Les variables sont données :
<?php
$age = 30;
$salary = 1000;
?>
Trouvez tous les utilisateurs dont l'âge ou le salaire sont égaux aux valeurs définies dans les variables.
Essayez d'effectuer une injection SQL dans votre code. Assurez-vous qu'elle ne passera pas.