sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvad gør pg_escape_string præcist?

Overvej følgende kode:

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

Antag nu, at $name er "Chicago O'Hare" . Når du laver strenginterpolationen, får du denne SQL-kode:

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

som er dårligt formet, fordi apostrof tolkes som et SQL-anførselstegn , og din forespørgsel vil fejle.

Værre ting kan også ske. Faktisk blev SQL-injektion rangeret som #1 Most Dangerous Software Error of 2011 af MITRE.

Men du bør aldrig oprette SQL-forespørgsler ved hjælp af strenginterpolation alligevel. Brug forespørgsler med parametre i stedet.

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


  1. Skift separatoren til et komma i SQLite-forespørgselsresultater

  2. date_trunc 5 minutters interval i PostgreSQL

  3. 2 eksempeldatabaser til SQLite

  4. SQL, Ved sletning af kaskade og ved opdateringskaskade