En supposant que tous les noms de champs de la table sont les mêmes que les noms de vos entrées de formulaire, c'est simple. Vous pouvez utiliser ceci :
$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);
Pour plus de sécurité, vous devez créer une liste blanche des paramètres acceptés, c'est-à-dire les colonnes de votre tableau comme ceci :
$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);
De cette façon, votre requête ne peut contenir que des paramètres que vous avez définis, et si quelqu'un parvient à injecter des extras (en changeant les noms de vos entrées de formulaire par exemple), il ne sera pas transmis à votre base de données.
Je vous recommande également d'arrêter d'utiliser Mysql_* , il est obsolète . Vous devriez regarder MySQLi ou AOP comme alternatives.