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"));