Hvis vi antager, at alle feltnavnene i tabellen er de samme som navnene på dine formularinput, er dette ligetil. Du kan bruge dette:
$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);
For at være mere sikker bør du oprette en hvidliste over accepterede parametre, dvs. kolonnerne i din tabel som denne:
$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);
På den måde kan din forespørgsel kun indeholde parametre, du indstiller, og hvis nogen formår at injicere ekstramateriale (f.eks. ved at ændre navnene på dine formularinputs), vil den ikke blive videregivet til din database.
Jeg vil også anbefale dig at stoppe med at bruge Mysql_* , den er udfaset . Du bør se på MySQLi eller PDO som alternativer.