Heim > Datenbank > MySQL-Tutorial > Wie kann ich PHP -Variablen sicher in MySQL -Abfragen aufnehmen?

Wie kann ich PHP -Variablen sicher in MySQL -Abfragen aufnehmen?

Susan Sarandon
Freigeben: 2025-01-25 16:47:15
Original
604 Leute haben es durchsucht

How Can I Safely Include PHP Variables in MySQL Queries?

Einbinden von PHP-Variablen in MySQL-Abfragen

Problem:

Einbinden von PHP-Variablen in MySQL-Anweisungen kann zu Fehlern führen, insbesondere wenn sie als Werte in VALUES eingefügt werden Klausel.

Lösung 1: Vorbereitete Anweisungen verwenden

Vorbereitete Anweisungen bieten eine sichere und effiziente Möglichkeit, PHP-Variablen in Abfragen einzubinden. So geht's:

  1. Bereiten Sie die Abfrage vor:Ersetzen Sie PHP-Variablen durch Platzhalterzeichen (z. B. ?).
  2. Variablen binden: PHP-Variablen mit Platzhaltern verknüpfen.
  3. Führen Sie aus Abfrage:Führen Sie die vorbereitete Anweisung mit den gebundenen Variablen aus.

Beispiel mit mysqli:

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

Beispiel mit PDO:

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

Lösung 2: Weiße Liste verwenden Filtern

Für Abfrageteile, die Bezeichner darstellen (z. B. Tabellen- oder Feldnamen), verwenden Sie Whitelist-Filterung, um sicherzustellen, dass sie gültig sind. Dies beinhaltet:

  1. Erstellen einer Whitelist:Angeben einer Liste zulässiger Werte.
  2. Überprüfen von Variablen:Überprüfen Sie, ob PHP-Variablen übereinstimmen Zulässige Werte.
  3. Formatierung von Bezeichnern:Formatierung von Bezeichnern entsprechend der Datenbank Syntax (z. B. Backticks für MySQL).

Beispiel für Whitelist-Filterung für Sortieren nach:

$orderby = $_GET['orderby'] ?: "name"; // Set default
$allowed = ["name", "price", "qty"]; // White list
if (!in_array($orderby, $allowed)) {
    throw new InvalidArgumentException("Invalid ORDER BY field name");
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich PHP -Variablen sicher in MySQL -Abfragen aufnehmen?. 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