Overvej følgende kode:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Antag nu, at $name
er "Chicago O'Hare"
. Når du laver strenginterpolationen, får du denne SQL-kode:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
som er dårligt formet, fordi apostrof tolkes som et SQL-anførselstegn , og din forespørgsel vil fejle.
Værre ting kan også ske. Faktisk blev SQL-injektion rangeret som #1 Most Dangerous Software Error of 2011 af MITRE.
Men du bør aldrig oprette SQL-forespørgsler ved hjælp af strenginterpolation alligevel. Brug forespørgsler med parametre i stedet.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));