Overweeg de volgende code:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Stel nu dat $name
is "Chicago O'Hare"
. Wanneer u de string-interpolatie uitvoert, krijgt u deze SQL-code:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
die slecht gevormd is, omdat de apostrof wordt geïnterpreteerd als een SQL-aanhalingsteken , en uw zoekopdracht zal een foutmelding geven.
Er kunnen ook ergere dingen gebeuren. In feite werd SQL-injectie door MITRE gerangschikt als #1 meest gevaarlijke softwarefout van 2011.
Maar u zou sowieso nooit SQL-query's moeten maken met behulp van tekenreeksinterpolatie. Gebruik in plaats daarvan zoekopdrachten met parameters.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));