यह मानते हुए कि तालिका में सभी फ़ील्ड नाम आपके फॉर्म इनपुट के नाम के समान हैं, यह सीधे आगे है। आप इसका उपयोग कर सकते हैं:
$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 देखना चाहिए या पीडीओ विकल्प के रूप में।