Nejprve nezapomeňte uniknout všem řetězcům, které k vám přicházejí prostřednictvím POST, GET nebo REQUEST (přečtěte si o útocích SQL injection, pokud si nejste jisti proč).
Něco takového by mohlo fungovat:
$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);
}
Pozn. :Nikdy jednoduše neprocházejte pole $_POST, abyste vytvořili příkaz SQL. Oponent může přidat další POST pole a možná způsobit neplechu. Procházení polem uživatelských vstupů může také vést k injektážnímu vektoru:názvy polí je třeba přidat do příkazu, což znamená, že se jedná o potenciální vektor. Standardní techniky prevence vkládání (připravené parametry příkazů, citační funkce poskytované ovladačem) nebudou pro identifikátory fungovat. Místo toho použijte k nastavení bílou listinu polí a proveďte smyčku přes bílou listinu nebo předejte vstupní pole přes bílou listinu.