sql >> Databáze >  >> RDS >> PostgreSQL

Co přesně dělá pg_escape_string?

Zvažte následující kód:

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

Nyní předpokládejme, že $name je "Chicago O'Hare" . Když provedete interpolaci řetězce, získáte tento kód SQL:

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

který je špatně vytvořený, protože apostrof se interpretuje jako uvozovka SQL a váš dotaz bude chybný.

Mohou se stát i horší věci. Ve skutečnosti bylo vkládání SQL hodnoceno jako #1 nejnebezpečnější softwarová chyba roku 2011 organizací MITRE.

Nikdy byste však neměli vytvářet dotazy SQL pomocí řetězcové interpolace. Místo toho použijte dotazy s parametry.

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


  1. Budoucnost Postgres-XL

  2. EEE MMM dd HH:mm:ss ZZZ yyyy formát data na java.sql.Date

  3. MariaDB JSON_CONTAINS_PATH() Vysvětleno

  4. Když DISTINCT <> GROUP BY