sql >> Database >  >> RDS >> PostgreSQL

Wat doet pg_escape_string precies?

Overweeg de volgende code:

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

Stel nu dat $name is "Chicago O'Hare" . Wanneer u de string-interpolatie uitvoert, krijgt u deze SQL-code:

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

die slecht gevormd is, omdat de apostrof wordt geïnterpreteerd als een SQL-aanhalingsteken , en uw zoekopdracht zal een foutmelding geven.

Er kunnen ook ergere dingen gebeuren. In feite werd SQL-injectie door MITRE gerangschikt als #1 meest gevaarlijke softwarefout van 2011.

Maar u zou sowieso nooit SQL-query's moeten maken met behulp van tekenreeksinterpolatie. Gebruik in plaats daarvan zoekopdrachten met parameters.

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


  1. Ongeldig syntaxisfouttype =MyISAM in DDL gegenereerd door Hibernate

  2. Hoe MySQL JDBC 08001 Databaseverbindingsfout op te lossen?

  3. INSERT met SELECT

  4. Primaire sleutels in SQL Server