Ervan uitgaande dat alle veldnamen in de tabel hetzelfde zijn als de namen van uw formulierinvoer, is dit eenvoudig. U kunt dit gebruiken:
$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);
Om veiliger te zijn, moet u een witte lijst met geaccepteerde parameters maken, d.w.z. de kolommen in uw tabel als volgt:
$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);
Op die manier kan uw zoekopdracht alleen parameters bevatten die u instelt, en als het iemand lukt om extra's te injecteren (door bijvoorbeeld de namen van uw formulierinvoer te wijzigen), wordt deze niet doorgegeven aan uw database.
Ik raad je ook aan om te stoppen met het gebruik van Mysql_* , het is verouderd . Je zou moeten kijken naar MySQLi of BOB als alternatieven.