Zvažte následující kód:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Nyní předpokládejme, že $name
je "Chicago O'Hare"
. Když provedete interpolaci řetězce, získáte tento kód SQL:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
který je špatně vytvořený, protože apostrof se interpretuje jako uvozovka SQL a váš dotaz bude chybný.
Mohou se stát i horší věci. Ve skutečnosti bylo vkládání SQL hodnoceno jako #1 nejnebezpečnější softwarová chyba roku 2011 organizací MITRE.
Nikdy byste však neměli vytvářet dotazy SQL pomocí řetězcové interpolace. Místo toho použijte dotazy s parametry.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));