Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एचटीएमएल फॉर्म से परिभाषित चर के आधार पर गतिशील रूप से MYSQL अद्यतन विवरण कैसे उत्पन्न करें

यह मानते हुए कि तालिका में सभी फ़ील्ड नाम आपके फॉर्म इनपुट के नाम के समान हैं, यह सीधे आगे है। आप इसका उपयोग कर सकते हैं:

$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 देखना चाहिए या पीडीओ विकल्प के रूप में।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. यह 7 दिन पहले का डेटा क्यों नहीं खींच रहा है?

  2. Mysql में LIKE क्लॉज का विकल्प

  3. mysql क्वेरी परिणामों को CSV में बदलें (कॉपी/पेस्ट के साथ)

  4. MySQL वर्कबेंच - ईईआर आरेख को कैसे सिंक्रनाइज़ करें

  5. hibernate.cfg.xml को applicationContext.xml में डेटा स्रोत के रूप में कैसे कॉन्फ़िगर करें?