Za předpokladu, že všechny názvy polí v tabulce jsou stejné jako názvy vašich formulářových vstupů, je to přímočaré. Můžete použít toto:
$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);
Chcete-li být bezpečnější, měli byste vytvořit seznam povolených parametrů, tj. sloupce v tabulce, jako je tento:
$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);
Tímto způsobem může váš dotaz obsahovat pouze vámi nastavené parametry, a pokud se komukoli podaří vložit doplňky (například změnou názvů vašich formulářových vstupů), nebude předán do vaší databáze.
Také bych vám doporučil, abyste přestali používat Mysql_* , je zastaralý . Měli byste se podívat na MySQLi nebo CHOP jako alternativy.