Rozważ następujący kod:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Załóżmy teraz, że $name
to "Chicago O'Hare"
. Kiedy wykonasz interpolację ciągów, otrzymasz następujący kod SQL:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
co jest źle sformułowane, ponieważ apostrof jest interpretowany jako znak cudzysłowu SQL , a zapytanie będzie błędne.
Mogą się też zdarzyć gorsze rzeczy. W rzeczywistości wstrzyknięcie SQL znalazło się na pierwszym miejscu wśród najbardziej niebezpiecznych błędów oprogramowania w 2011 roku według MITRE.
Ale i tak nigdy nie powinieneś tworzyć zapytań SQL przy użyciu interpolacji ciągów. Zamiast tego użyj zapytań z parametrami.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));