Positionale Platzhalter in PDO in PHP
Lassen Sie uns herausfinden, wie man mit positionellen Platzhaltern arbeitet. Nehmen wir an, wir haben zwei Variablen, die wir in die Abfrage einfügen möchten:
<?php
$min = 1;
$max = 5;
?>
Nehmen wir an, wir möchten unsere Variablen wie folgt einfügen:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Das ist jedoch unsicher. Anstatt die Variablen direkt einzufügen, ersetzen wir sie daher durch positionelle Platzhalter, die durch Fragezeichen dargestellt werden:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Führen wir nun den Befehl aus, der die Abfrage vorbereitet:
<?php
$res = $pdo->prepare($sql);
?>
Führen wir nun die Abfrage aus, indem wir ihr als Parameter ein Array übergeben, das unsere Variablen enthält. Dabei werden die Variablen in der Reihenfolge in die Abfrage eingefügt, in der sie im Array angegeben sind:
<?php
$res->execute([$min, $max]);
?>
Danach können wir das Ergebnis der Abfrage abrufen:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Fassen wir alles zusammen und erhalten den folgenden Code:
<?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);
}
?>
Gegeben sind die Variablen:
<?php
$age = 30;
$salary = 1000;
?>
Finden Sie alle Benutzer, deren Alter oder Gehalt den in den Variablen angegebenen Werten entsprechen.
Versuchen Sie, eine SQL-Injektion in Ihren Code durchzuführen. Stellen Sie sicher, dass sie nicht funktioniert.