sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad gör pg_escape_string exakt?

Tänk på följande kod:

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

Anta nu att $name är "Chicago O'Hare" . När du gör stränginterpolationen får du denna SQL-kod:

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

som är dåligt utformad, eftersom apostrof tolkas som ett SQL-citattecken , och din fråga kommer att få ett fel.

Värre saker kan också hända. Faktum är att SQL-injektion rankades som nummer 1 mest farliga programvarufel 2011 av MITRE.

Men du bör aldrig skapa SQL-frågor med stränginterpolation ändå. Använd sökfrågor med parametrar istället.

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


  1. Ytterligare ett 12c Optimizer-vitbok

  2. Hur exporterar man all data från tabell till ett insättningsbart sql-format?

  3. Välj N:te raden från en tabell i Oracle

  4. Installera MariaDB 10.1 i Debian Jessie och köra olika MariaDB-frågor