sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Qué hace exactamente pg_escape_string?

Considere el siguiente código:

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

Ahora supongamos que $name es "Chicago O'Hare" . Cuando realiza la interpolación de cadenas, obtiene este código SQL:

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

que está mal formado, porque el apóstrofe se interpreta como una comilla de SQL , y su consulta generará un error.

También pueden pasar cosas peores. De hecho, la inyección SQL fue clasificada como el error de software más peligroso número 1 de 2011 por MITRE.

Pero nunca debería crear consultas SQL utilizando la interpolación de cadenas de todos modos. Utilice consultas con parámetros en su lugar.

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