Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich PHP-Variablen sicher in MySQL-Anweisungen einbinden?

Wie kann ich PHP-Variablen sicher in MySQL-Anweisungen einbinden?

Barbara Streisand
Freigeben: 2024-12-25 08:10:29
Original
264 Leute haben es durchsucht

How Can I Safely Include PHP Variables in MySQL Statements?

Einbinden von PHP-Variablen in MySQL-Anweisungen

Beim Einfügen von Werten in eine Tabelle mithilfe einer PHP-Variablen in Ihrer VALUES-Anweisung tritt ein Problem auf . Es ist von entscheidender Bedeutung, den richtigen Ansatz für die Integration von PHP-Variablen in MySQL-Anweisungen zu verstehen.

Vorbereitete Anweisungen verwenden

Das Einfügen von Datenliteralen (SQL-Zeichenfolgen oder -Zahlen) in MySQL-Anweisungen erfordert die Verwendung vorbereiteter Aussagen. Es beinhaltet:

  1. Ersetzen von Variablen durch Platzhalter in Ihrer SQL-Anweisung
  2. Vorbereiten der überarbeiteten Abfrage
  3. Binden von Variablen an Platzhalter
  4. Ausführen der Abfrage

Hinzufügen von Datenliteralen mit Mysqli

In PHP 8.2 können diese Schritte in einem einzigen Aufruf zusammengefasst werden:

$type = 'testing';
$reporter = "John O'Hara";
$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)";
$mysqli->execute_query($sql, [$reporter, $description]);
Nach dem Login kopieren

Für ältere PHP-Versionen:

$type = 'testing';
$reporter = "John O'Hara";
$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ss", $reporter, $description);
$stmt->execute();
Nach dem Login kopieren

< h3>Hinzufügen von Datenliteralen mit PDO

PDO bietet a Optimierter Ansatz:

$type = 'testing';
$reporter = "John O'Hara";
$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$reporter, $description]);
Nach dem Login kopieren

Variablen für andere Abfrageteile filtern

Variablen, die andere Abfrageteile als Literale darstellen (Schlüsselwörter, Bezeichner), sollten über eine Whitelist gefiltert werden . Dies verhindert das Einfügen unbeabsichtigter Werte.

Um beispielsweise einen Feldnamen basierend auf Benutzereingaben zu filtern:

$orderby = $_GET['orderby'] ?: "name"; // set the default value
$allowed = ["name", "price", "qty"]; // the white list of allowed field names
$key = array_search($orderby, $allowed, true); // see if we have such a name
if ($key === false) { 
    throw new InvalidArgumentException("Invalid field name"); 
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich PHP-Variablen sicher in MySQL-Anweisungen einbinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage