テーブル内のすべてのフィールド名がフォーム入力の名前と同じであると仮定すると、これは簡単です。これを使用できます:
$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);
より安全にするには、受け入れられたパラメータのホワイトリストを作成する必要があります。つまり、次のようにテーブルの列を作成します。
$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);
そうすれば、クエリには設定したパラメータのみを含めることができ、誰かが(たとえば、フォーム入力の名前を変更することによって)エクストラを挿入することができた場合、それはデータベースに渡されません。
また、 MySQL _ *の使用を停止することをお勧めします 、非推奨
です 。 MySQLi
をご覧ください。 または