PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O que o pg_escape_string faz exatamente?


Considere o seguinte código:
$sql = "INSERT INTO airports (name) VALUES ('$name')";

Agora suponha que $name é "Chicago O'Hare" . Ao fazer a interpolação de string, você obtém este código SQL:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')

que está mal formado, porque o apóstrofe é interpretado como uma aspas SQL , e sua consulta apresentará um erro.

Coisas piores também podem acontecer. Na verdade, a injeção de SQL foi classificada como o erro de software mais perigoso de 2011 pela MITRE.

Mas você nunca deve criar consultas SQL usando interpolação de strings. Em vez disso, use consultas com parâmetros.
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));