sql >> Databáze >  >> RDS >> Mysql

jak aktualizovat jedno nebo více polí ignorujících prázdná pole do databáze mysql?

Nejprve nezapomeňte uniknout všem řetězcům, které k vám přicházejí prostřednictvím POST, GET nebo REQUEST (přečtěte si o útocích SQL injection, pokud si nejste jisti proč).

Něco takového by mohlo fungovat:

$semaphore = false;
$query = "UPDATE contacts SET ";
$fields = array('tel','fax','email');
foreach ($fields as $field) {
   if (isset($_POST[$field]) and !empty($_POST[$field]) {
     $var = mysql_real_escape_string($_POST[$field]);
     $query .= uppercase($field) . " = '$var'";
     $semaphore = true;
   }
}

if ($semaphore) {
   $query .= " WHERE Cust_Name = '$cst'";
   mysql_query($query);
}

Pozn. :Nikdy jednoduše neprocházejte pole $_POST, abyste vytvořili příkaz SQL. Oponent může přidat další POST pole a možná způsobit neplechu. Procházení polem uživatelských vstupů může také vést k injektážnímu vektoru:názvy polí je třeba přidat do příkazu, což znamená, že se jedná o potenciální vektor. Standardní techniky prevence vkládání (připravené parametry příkazů, citační funkce poskytované ovladačem) nebudou pro identifikátory fungovat. Místo toho použijte k nastavení bílou listinu polí a proveďte smyčku přes bílou listinu nebo předejte vstupní pole přes bílou listinu.



  1. Tisknout hierarchická data v nadřazeném podřízeném formuláři neuspořádaný seznam php?

  2. Získávání podivných znaků při načítání hodnoty v databázi mysql

  3. Chybová hodnota neexistuje – problém postgresql INSERT INTO

  4. „Inteligentní“ vyhledávač PHP pro vyhledávání rad v tabulkách Mysql