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

एक MySQL डीबी के लिए गतिशील SQL क्वेरी बनाना

यदि आपके पास फ़ील्ड नामों और इस तरह के मानों वाला नक्शा है:

m := map[string]interface{}{"UserID": 1234, "Age": 18}

तो आप इस तरह की क्वेरी बना सकते हैं:

var values []interface{}
var where []string
for _, k := range []string{"userId", "gender", "age", "name", "height", "weight", "ethnicity"} {
    if v, ok := m[k]; ok {
        values = append(values, v)
        where = append(where, fmt.Sprintf("%s = ?", k))
    }
}
r, err := db.QueryRow("SELECT name FROM users WHERE " + strings.Join(where, " AND "), values...)

यह SQL इंजेक्शन के लिए अतिसंवेदनशील नहीं है क्योंकि प्लेसहोल्डर्स का उपयोग एप्लिकेशन के प्रत्यक्ष नियंत्रण से बाहर क्वेरी के कुछ हिस्सों के लिए किया जाता है।

यदि मानचित्र कुंजियों को फ़ील्ड नामों की अनुमति के लिए जाना जाता है, तो इसका उपयोग करें:

var values []interface{}
var where []string
for k, v := range m {
    values = append(values, v)
    where = append(where, fmt.Sprintf("%s = ?", k))
}
r, err := db.QueryRow("SELECT name FROM users WHERE " + strings.Join(where, " AND "), values...)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql एक ही कॉलम की कई शर्तों के साथ क्वेरी का चयन करें

  2. MYSQL डेटाबेस डेटा के साथ जावास्क्रिप्ट सरणी लोड करें

  3. mysql - गतिशील कॉलम उपनाम

  4. MySQL त्रुटि कोड:1175 MySQL कार्यक्षेत्र में अद्यतन के दौरान

  5. ऐसे रिकॉर्ड कैसे प्राप्त करें जिनमें अल्फान्यूमेरिक वर्ण + सफेद-रिक्त स्थान हों