SQL में, स्ट्रिंग मानों को उद्धृत करने की आवश्यकता है:
VALUES ('value1', 'value2')"
जब आप चर का उपयोग करते हैं:
VALUES ($var1, $var2)");
उन्हें उद्धृत नहीं किया जाता है ... जब तक कि उद्धरण स्वयं मूल्यों में न हों।
तो अगर $var1 = 'value1'; $var2 = 'value2'
तब (वेरिएबल आपके स्ट्रिंग में इंटरपोलेट किए जाने के बाद) आपका SQL इस तरह दिखता है:
VALUES (value1, value2)"
आप उद्धरण जोड़कर अपनी तत्काल समस्या का समाधान कर सकते हैं:
VALUES ('$var1', '$var2')");
लेकिन यह आपकी प्रमुख सुरक्षा भेद्यता को ठीक नहीं करता है और आपके डेटा को अलग-अलग तरीकों से क्वेरी को तोड़ने देता है।
आपको वेरिएबल से स्ट्रिंग्स असेंबल करके SQL स्टेटमेंट बनाने से बचना चाहिए . इस तरह SQL इंजेक्शन सुरक्षा छेद की ओर जाता है। ऐसे इंटरफ़ेस का उपयोग करें जो बाध्य तर्कों का समर्थन करता हो . वे आपके लिए उद्धरण देना और भागना संभाल लेंगे।