Heim >Backend-Entwicklung >PHP-Tutorial >Warum verursachen PHP-Variablen Fehler, wenn sie in der VALUES-Klausel von MySQL verwendet werden?
Problem:
In PHP wird eine Variable in einer verwendet Die in VALUES eingeschlossene MySQL-Anweisung ist die Ursache Probleme.
Frage:
Warum führt das Einfügen einer Variablen in VALUES zu Fehlern?
Antwort:
Es gibt zwei unterschiedliche Ansätze, PHP-Variablen in MySQL-Anweisungen einzubinden richtig:
Vorbereitete Anweisungen verwenden:
Für Variablen, die SQL-Datenliterale (Zeichenfolgen, Zahlen) darstellen, müssen vorbereitete Anweisungen verwendet werden. Dies beinhaltet:
Beispiel (mysqli):
$type = 'testing'; $sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)"; $mysqli->execute_query($sql, [$type, $reporter, $description]);
Whitelist-Filterung verwenden:
Für jede andere Variable, die einen Abfrageteil darstellt (z. B. Schlüsselwort). , Bezeichner) müssen sie durch eine Whitelist gefiltert werden, um sicherzustellen, dass nur zulässige Werte verwendet werden. Beispiel (Überprüfung von orderby):
$orderby = $_GET['orderby'] ?: 'name'; $allowed = ['name', 'price', 'qty']; $key = array_search($orderby, $allowed); if ($key === false) throw new InvalidArgumentException("Invalid field name");
Fazit:
Die Einhaltung dieser Grundsätze schützt vor SQL-Injection und stellt die korrekte Ausführung von Abfragen sicher, wenn PHP-Variablen beteiligt sind. Für Datenliterale sollten vorbereitete Anweisungen verwendet werden, während Whitelisting sicherstellt, dass nur zulässige Werte in andere Teile der Abfrage eingefügt werden.
Das obige ist der detaillierte Inhalt vonWarum verursachen PHP-Variablen Fehler, wenn sie in der VALUES-Klausel von MySQL verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!