Zakładając, że wszystkie nazwy pól w tabeli są takie same jak nazwy danych wejściowych formularza, jest to proste. Możesz użyć tego:
$query = "UPDATE product SET";
$comma = " ";
foreach($_POST as $key => $val) {
if( ! empty($val)) {
$query .= $comma . $key . " = '" . mysql_real_escape_string(trim($val)) . "'";
$comma = ", ";
}
}
$sql = mysql_query($query);
Aby zapewnić sobie większe bezpieczeństwo, należy utworzyć białą listę akceptowanych parametrów, tj. kolumny w tabeli w następujący sposób:
$query = "UPDATE product SET";
$comma = " ";
$whitelist = array(
'title',
'rating',
'season',
'brand_id',
'cateogry',
// ...etc
);
foreach($_POST as $key => $val) {
if( ! empty($val) && in_array($key, $whitelist)) {
$query .= $comma . $key . " = '" . mysql_real_escape_string(trim($val)) . "'";
$comma = ", ";
}
}
$sql = mysql_query($query);
W ten sposób Twoje zapytanie może zawierać tylko ustawione przez Ciebie parametry, a jeśli komuś uda się wprowadzić dodatki (na przykład zmieniając nazwy danych wejściowych formularza), nie zostaną one przesłane do Twojej bazy danych.
Zalecam również zaprzestanie używania Mysql_* , jest przestarzałe . Powinieneś spojrzeć na MySQLi lub PDO jako alternatywy.