Mysql
 sql >> Database >  >> RDS >> Mysql

come aggiornare uno o più campi ignorando i campi vuoti nel database mysql?

Per prima cosa ricorda di evitare qualsiasi stringa che ti arriva tramite POST, GET o REQUEST (leggi sugli attacchi SQL injection se non sei sicuro del perché).

Qualcosa del genere potrebbe funzionare:

$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 :Non eseguire mai semplicemente il ciclo dell'array $_POST per creare un'istruzione SQL. Un avversario può aggiungere campi POST extra e possibilmente causare danni. Il ciclo di un array di input dell'utente può anche portare a un vettore di iniezione:i nomi dei campi devono essere aggiunti all'istruzione, il che significa che sono un potenziale vettore. Le tecniche standard di prevenzione dell'iniezione (parametri delle istruzioni preparate, funzioni di quotazione fornite dal driver) non funzioneranno per gli identificatori. Utilizzare invece una whitelist di campi da impostare e scorrere la whitelist o passare l'array di input attraverso la whitelist.