Tänk på följande kod:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Anta nu att $name
är "Chicago O'Hare"
. När du gör stränginterpolationen får du denna SQL-kod:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
som är dåligt utformad, eftersom apostrof tolkas som ett SQL-citattecken , och din fråga kommer att få ett fel.
Värre saker kan också hända. Faktum är att SQL-injektion rankades som nummer 1 mest farliga programvarufel 2011 av MITRE.
Men du bör aldrig skapa SQL-frågor med stränginterpolation ändå. Använd sökfrågor med parametrar istället.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));