sql >> Database >  >> RDS >> Mysql

hoe een of meer velden bij te werken waarbij de lege velden worden genegeerd in de mysql-database?

Onthoud eerst dat je moet ontsnappen aan strings die via POST, GET of REQUEST naar je toe komen (lees meer over SQL-injectie-aanvallen als je niet zeker weet waarom).

Iets als dit zou kunnen werken:

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

NB :Loop nooit zomaar door uw $_POST-array om een ​​SQL-instructie te maken. Een tegenstander kan extra POST-velden toevoegen en mogelijk onheil veroorzaken. Het doorlopen van een gebruikersinvoerarray kan ook leiden tot een injectievector:de veldnamen moeten aan de instructie worden toegevoegd, wat betekent dat ze een potentiële vector zijn. Standaard injectiepreventietechnieken (voorbereide instructieparameters, door het stuurprogramma verstrekte aanhalingsfuncties) werken niet voor identifiers. Gebruik in plaats daarvan een witte lijst met velden om in te stellen en loop over de witte lijst of geef de invoerarray door de witte lijst.



  1. Hoofdlettergevoelig RLIKE

  2. Fout (1093):U kunt de doeltabel niet bijwerken voor update in de FROM-clausule

  3. Oracle:Combineer meerdere resultaten in een subquery tot één door komma's gescheiden waarde

  4. Hoe MariaDB 10 op RHEL 8 te installeren