Heim > Datenbank > MySQL-Tutorial > Wie fügt ich PHP -Variablen sicher in MySQL -Abfragen ein?

Wie fügt ich PHP -Variablen sicher in MySQL -Abfragen ein?

Linda Hamilton
Freigeben: 2025-01-25 16:42:11
Original
803 Leute haben es durchsucht

How to Safely Insert PHP Variables into MySQL Queries?

PHP-Variablen sicher in MySQL-Anweisungen einbinden

Beim Versuch, PHP-Variablen als Teil einer SQL-Anweisung zum Einfügen von Werten in eine MySQL-Tabelle zu verwenden, können Probleme auftreten. Um eine korrekte Ausführung zu gewährleisten, befolgen Sie unbedingt diese Regeln:

1. Verwenden Sie vorbereitete Aussagen

Vorbereitete Anweisungen sind für das Hinzufügen von PHP-Variablen, die SQL-Datenliterale (Zeichenfolgen oder Zahlen) darstellen, unerlässlich. Sie müssen Variablen in der SQL-Anweisung durch Platzhalter ersetzen und dann die Abfrage vorbereiten, binden und ausführen.

Das Folgende ist ein Beispiel für die Verwendung von MySQL:

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

Für PDO können die Bindungs- und Ausführungsteile kombiniert werden:

<code><br></br>$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)";<br></br>$stmt = $pdo->prepare($sql);<br></br>$stmt->execute([$reporter, $description]);<br></br></code>
Nach dem Login kopieren

2. Whitelist-Filterung implementieren

Wenn eine PHP-Variable einen Teil einer Abfrage (über ein Datenliteral hinaus) darstellt, beispielsweise ein Schlüsselwort oder einen Bezeichner, muss sie anhand einer vordefinierten „Whitelist“ zulässiger Werte überprüft werden. Dadurch wird sichergestellt, dass nur gültige Werte im Abfragestring enthalten sind.

Das Folgende ist ein Beispiel für die Whitelist-Filterung für Sortierfeldnamen:

<code><br></br>$orderby = $_GET['orderby'] ?: "name"; // 设置默认值<br></br>$allowed = ["name", "price", "qty"]; // 允许的字段名称白名单<br></br>$key = array_search($orderby, $allowed, true);<br></br>if ($key === false) {throw new InvalidArgumentException("无效的字段名称");<p>}<br></br></p></code>
Nach dem Login kopieren

Nach der Whitelist-Filterung kann die Variable $orderby sicher in SQL-Abfragen einbezogen werden.

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