Denken Sie zunächst daran, alle Zeichenfolgen zu maskieren, die Sie über POST, GET oder REQUEST erhalten (lesen Sie über SQL-Injection-Angriffe nach, wenn Sie sich nicht sicher sind, warum).
So etwas könnte funktionieren:
$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 Hinweis:Schleifen Sie niemals einfach durch Ihr $_POST-Array, um eine SQL-Anweisung zu erstellen. Ein Gegner kann zusätzliche POST-Felder hinzufügen und möglicherweise Unheil anrichten. Das Durchlaufen eines Benutzereingabearrays kann auch zu einem Injektionsvektor führen:Die Feldnamen müssen der Anweisung hinzugefügt werden, was bedeutet, dass sie ein potenzieller Vektor sind. Standardtechniken zur Vermeidung von Injektionen (vorbereitete Anweisungsparameter, vom Treiber bereitgestellte Quoting-Funktionen) funktionieren für Bezeichner nicht. Verwenden Sie stattdessen eine Whitelist von festzulegenden Feldern und durchlaufen Sie die Whitelist oder übergeben Sie das Eingabearray durch die Whitelist.