Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak zaktualizować jedno lub więcej pól ignorując puste pola do bazy mysql?

Po pierwsze pamiętaj, aby uciec od wszelkich ciągów przychodzących do Ciebie przez POST, GET lub REQUEST (poczytaj o atakach wstrzykiwania SQL, jeśli nie masz pewności, dlaczego).

Coś takiego może zadziałać:

$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);
}

Uwaga :Nigdy nie przechodź po prostu w pętli przez tablicę $_POST, aby utworzyć instrukcję SQL. Przeciwnik może dodać dodatkowe pola POST i prawdopodobnie spowodować psoty. Pętla przez tablicę wejściową użytkownika może również prowadzić do wektora wstrzyknięcia:nazwy pól należy dodać do instrukcji, co oznacza, że ​​są one potencjalnym wektorem. Standardowe techniki zapobiegania wstrzykiwaniu (przygotowane parametry instrukcji, dostarczane przez sterownik funkcje cytowania) nie będą działać w przypadku identyfikatorów. Zamiast tego użyj białej listy pól do ustawienia i zapętl ją nad białą listą lub przekaż tablicę wejściową przez białą listę.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Synchroniczny mysql w Node.js

  2. MySQL, jak sprawić, by wartość wygasła?

  3. Mysql Utwórz bazę danych ze znakami specjalnymi w nazwie

  4. Utracono połączenie z serwerem MySQL podczas zapytania

  5. Ignorowanie roku w zapytaniu SQL z zakresem dat