Първо, не забравяйте да избягвате всички низове, идващи при вас чрез POST, GET или REQUEST (прочетете за атаките с инжектиране на SQL, ако не сте сигурни защо).
Нещо подобно може да работи:
$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 :Никога не минавайте през вашия масив $_POST, за да създадете SQL израз. Противникът може да добави допълнителни POST полета и евентуално да причини пакости. Преминаването през масив за въвеждане на потребител може също да доведе до вектор на инжектиране:имената на полетата трябва да бъдат добавени към израза, което означава, че те са потенциален вектор. Стандартните техники за предотвратяване на инжектиране (подготвени параметри на израза, функции за цитиране, предоставени от драйвера) няма да работят за идентификатори. Вместо това използвайте бял списък с полета, за да зададете, и прекарайте белия списък или прекарайте входния масив през белия списък.