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

Как да използвам бели списъци и подготвени изрази с Postgresql в php?

Бял списък

Вашият код в сегашната си форма е много опасен, не само позволявате на потребителя да реши кои полета да бъдат избрани, но също така му позволявате да реши към какви таблици да прави заявки. Определено трябва да извършите проверка на белия списък за тях. напр.:

if($_POST['tableSelected'] == 'acceptable_table1' || $_POST['tableSelected'] == 'acceptable_table2) {
    $table = $_POST['tableSelected']
}

По същия начин трябва да потвърдите списъците с полета. Но проверката на списъка с полета ще бъде доста сложна, защото вашите полета ще зависят от таблицата. Предлагам да създадете масиви и да проверите дали селекцията е в тях.

$table1_fields = array('col1','col2',...)
$table2_fields = array('col1','col2',...)

Подготвени отчети

Както знаете, подготвените изрази могат да се използват само за свързване на параметри. Те не могат да се използват за попълване на имена на таблици и колони. Ето защо имате нужда както от подготвени отчети, така и от бял списък. Препоръчвам да използвате PDO . Може да изглежда нещо като

$stmt = $dbh->prepare("SELECT {$fieldlist} FROM {$table} where field = ?");
$stmt->execute(array('somevalue'));



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql -- почистване на HTML тагове в средата на низа

  2. В psql как да стартирам цикъл за заявка за избор с CTE и да получа показания изход, ако го стартирам в db само за четене?

  3. Експортиране на PostgreSQL заявка в csv файл с помощта на Python

  4. Postgres функционира много по-бавно, когато използва входни променливи

  5. Подреждане на резултатите от заявката по числови низове в django (backend на postgres)