PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво точно прави pg_escape_string?

Помислете за следния код:

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

Сега да предположим, че $name е "Chicago O'Hare" . Когато правите интерполацията на низове, получавате този SQL код:

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

което е неправилно оформено, защото апостроф се интерпретира като SQL кавичка , и вашата заявка ще бъде грешка.

Могат да се случат и по-лоши неща. Всъщност SQL инжекцията беше класирана №1 за най-опасната софтуерна грешка за 2011 г. от MITRE.

Но никога не трябва да създавате SQL заявки с помощта на интерполация на низове. Вместо това използвайте заявки с параметри.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на row_to_json() с вложени съединения

  2. Как да конфигурирате PostgreSQL да приема всички входящи връзки

  3. Опашка за задания като SQL таблица с множество потребители (PostgreSQL)

  4. Най-добрите ресурси за обучение и обучение на PostgreSQL

  5. Как да включа нула / 0 резултати в COUNT агрегат?