Marcadores de posición posicionales en PDO en PHP
Vamos a entender cómo trabajar con marcadores de posición posicionales. Supongamos que tenemos dos variables que nos gustaría insertar en la consulta:
<?php
$min = 1;
$max = 5;
?>
Supongamos que queremos insertar nuestras variables de la siguiente manera:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Sin embargo, esto no es seguro. Por lo tanto, en lugar de insertar las variables directamente, las reemplazaremos con marcadores de posición posicionales, que son signos de interrogación:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Ahora ejecutemos el comando que preparará la consulta:
<?php
$res = $pdo->prepare($sql);
?>
Ahora ejecutemos la consulta, pasándole como parámetros un array que contenga nuestras variables. Al hacerlo, las variables se insertarán en la consulta en el orden en que están especificadas en el array:
<?php
$res->execute([$min, $max]);
?>
Después de esto, podemos obtener el resultado de la consulta:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Juntemos todo y obtendremos el siguiente código:
<?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);
}
?>
Se dan las variables:
<?php
$age = 30;
$salary = 1000;
?>
Encuentre todos los usuarios, cuyos edad o salario sean iguales a los valores dados en las variables.
Intente realizar una inyección SQL en su código. Asegúrese de que no tendrá éxito.