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:
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();
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]);
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:
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"); }
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!