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

mysql और golang में एक गतिशील क्वेरी बनाना

स्ट्रिंग को प्रारूपित करने के बारे में आपके प्रश्न का उत्तर देने के लिए, सरल उत्तर fmt.Sprintf अपनी स्ट्रिंग की संरचना करने के लिए। हालांकि डीबी प्रश्नों के लिए fmt.Sprintf का उपयोग करने पर एक त्वरित नोट के लिए और नीचे देखें:

उदाहरण:

query := fmt.Sprintf("SELECT id FROM users WHERE login='%s'", login)
err = db.Query(query)

// Equivalent to:
rows, err := db.Query("SELECT id FROM users WHERE login=?", login)

प्रश्नों के लिए इसका उपयोग करके, आप इंजेक्शन से सुरक्षित हैं। कहा जा रहा है, आप इसे संशोधित करने और db.Exec का उपयोग क्रिएशन/अपडेट/डिलीट करने के लिए भी कर सकते हैं। अंगूठे के एक सामान्य नियम के रूप में, यदि आप fmt.Sprintf के साथ db.Exec का उपयोग करते हैं और पहले अपने इनपुट को साफ नहीं करते हैं, तो आप अपने आप को sql इंजेक्शन के लिए खोलते हैं

db.Exec के साथ fmt.Sprintf खराब क्यों है, इसके सरल उदाहरण के साथ GoPlay:
https://play.golang.org/p/-IWyymAg_Q

आपको db.Query का इस्तेमाल करना चाहिए या db.Prepare इस तरह के हमले वैक्टर से बचने के लिए उचित तरीके से। इंजेक्शन-सुरक्षित स्निपेट के साथ आने के लिए आपको उपरोक्त कोड नमूने को संशोधित करना पड़ सकता है, लेकिन उम्मीद है कि मैंने आपको आरंभ करने के लिए पर्याप्त दिया है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फुलटेक्स्ट इंडेक्स क्या है और मुझे इसका इस्तेमाल कब करना चाहिए?

  2. सबसे हाल की टिप्पणी या अंतिम पोस्ट द्वारा MySQL आदेश पोस्ट

  3. एसक्यूएल में मैं एक पूर्णांक के लिए अधिकतम मूल्य कैसे प्राप्त करूं?

  4. उसी तालिका में डालें mysql . ट्रिगर करें

  5. JSON डेटा को पार्स करना और MySQL में सम्मिलित करना