PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Que fait pg_escape_string exactement ?

Considérez le code suivant :

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

Supposons maintenant que $name est "Chicago O'Hare" . Lorsque vous effectuez l'interpolation de chaîne, vous obtenez ce code SQL :

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

qui est mal formé, car l'apostrophe est interprété comme un guillemet SQL , et votre requête générera une erreur.

Des choses pires peuvent aussi arriver. En fait, l'injection SQL a été classée n°1 des erreurs logicielles les plus dangereuses de 2011 par MITRE.

Mais vous ne devriez jamais créer de requêtes SQL en utilisant l'interpolation de chaîne de toute façon. Utilisez plutôt des requêtes avec des paramètres.

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