Помислете за следния код:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Сега да предположим, че $name
е "Chicago O'Hare"
. Когато правите интерполацията на низове, получавате този SQL код:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
което е неправилно оформено, защото апостроф се интерпретира като SQL кавичка , и вашата заявка ще бъде грешка.
Могат да се случат и по-лоши неща. Всъщност SQL инжекцията беше класирана №1 за най-опасната софтуерна грешка за 2011 г. от MITRE.
Но никога не трябва да създавате SQL заявки с помощта на интерполация на низове. Вместо това използвайте заявки с параметри.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));