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
Linda HamiltonOriginal
2025-01-25 16:42:11807Durchsuche

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>

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>

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 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!

Stellungnahme:
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