sql >> Databasteknik >  >> RDS >> Mysql

hur uppdaterar man ett eller flera fält och ignorerar de tomma fälten i mysql-databasen?

Kom först ihåg att undvika alla strängar som kommer till dig via POST, GET eller REQUEST (läs upp om SQL-injektionsattacker om du är osäker på varför).

Något liknande det här kan fungera:

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

OBS :Gå aldrig helt enkelt genom din $_POST-array för att skapa en SQL-sats. En motståndare kan lägga till extra POST-fält och eventuellt orsaka bus. Att loopa genom en användarinmatningsmatris kan också leda till en injektionsvektor:fältnamnen måste läggas till i satsen, vilket betyder att de är en potentiell vektor. Standardtekniker för förebyggande av injektion (förberedda uttalandeparametrar, drivrutinsförsedda citatfunktioner) fungerar inte för identifierare. Använd istället en vitlista med fält att ställa in och gå över vitlistan eller skicka inmatningsfältet genom vitlistan.



  1. MySQL inaktivera och aktivera nycklar

  2. SQL-serverlogg, leverans och katastrofåterställning, installation och konfiguration -2

  3. Hur man kontrollerar konfigurationsinställningarna för Databas Mail i SQL Server (T-SQL)

  4. mysql- Hur ansöker man om bidrag till kolumn?