PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Che cosa fa esattamente pg_escape_string?

Considera il seguente codice:

$sql = "INSERT INTO airports (name) VALUES ('$name')";

Supponiamo ora che $name è "Chicago O'Hare" . Quando esegui l'interpolazione delle stringhe, ottieni questo codice SQL:

INSERT INTO airports (name) VALUES ('Chicago O'Hare')

che è mal formato, perché l'apostrofo viene interpretato come virgolette SQL e la tua query risulterà in errore.

Possono succedere anche cose peggiori. In effetti, SQL injection è stata classificata da MITRE al primo posto tra gli errori software più pericolosi del 2011.

Ma non dovresti mai creare query SQL usando comunque l'interpolazione di stringhe. Utilizza invece query con parametri.

$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));