sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan bruger man hvidlister og forberedte erklæringer med Postgresql i php?

Hvid liste

Din kode i dens nuværende form er meget farlig, ikke kun giver du brugeren mulighed for at bestemme hvilke felter der skal vælges, men du tillader ham også at bestemme hvilke tabeller der skal forespørges på. Du bør helt sikkert foretage hvidlistekontrol af disse. f.eks.:

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

På samme måde bør du validere feltlisterne. Men validering af feltliste vil være ret kompliceret, fordi dine felter vil være afhængige af tabellen. Jeg foreslår at oprette arrays og kontrollere, at markeringen er i den.

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

Forberedte erklæringer

Som du ved, kan forberedte udsagn kun bruges til at binde parametre. De kan ikke bruges til at udfylde tabelnavne og kolonnenavne. Derfor har du brug for både forberedte erklæringer og hvidliste. Jeg anbefaler at bruge PDO . Det kan ligne

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



  1. Er det sikkert at omarrangere kolonner i schema.rb for Rails 4/Postgres?

  2. Omdøb en fremmednøgle i SQL Server ved hjælp af T-SQL

  3. Fejl:Der findes bordplads til tabel xxx. Kassér venligst bordpladsen før IMPORT

  4. Postgresql gør null til nul