PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como usar listas brancas e instruções preparadas com o Postgresql em php?

Lista Branca


Seu código em sua forma atual é muito perigoso, não apenas você permite que o usuário decida quais campos devem ser selecionados, mas também permite que ele decida em quais tabelas consultar. Você definitivamente deve realizar a verificação da lista branca sobre eles. por exemplo:
if($_POST['tableSelected'] == 'acceptable_table1' || $_POST['tableSelected'] == 'acceptable_table2) {
    $table = $_POST['tableSelected']
}

Da mesma forma, você deve validar as listas de campos. Mas a validação da lista de campos será bastante complicada porque seus campos serão dependentes da tabela. Sugiro criar arrays e verificar se a seleção está nele.
$table1_fields = array('col1','col2',...)
$table2_fields = array('col1','col2',...)

Declarações Preparadas


Como você sabe, as instruções preparadas só podem ser usadas para vincular parâmetros. Eles não podem ser usados ​​para preencher nomes de tabelas e nomes de colunas. É por isso que você precisa de declarações preparadas e lista branca. Eu recomendo usar PDO . Pode parecer algo como
$stmt = $dbh->prepare("SELECT {$fieldlist} FROM {$table} where field = ?");
$stmt->execute(array('somevalue'));