Betrachten Sie den folgenden Code:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Nehmen wir nun an, dass $name
ist "Chicago O'Hare"
. Wenn Sie die String-Interpolation durchführen, erhalten Sie diesen SQL-Code:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
was falsch geformt ist, weil der Apostroph wird als SQL-Anführungszeichen interpretiert , und Ihre Abfrage wird fehlerhaft.
Es können auch schlimmere Dinge passieren. Tatsächlich wurde die SQL-Injection von MITRE auf Platz 1 der gefährlichsten Softwarefehler des Jahres 2011 eingestuft.
Aber Sie sollten sowieso niemals SQL-Abfragen mit String-Interpolation erstellen. Verwenden Sie stattdessen Abfragen mit Parametern.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));