स्टीफन एसेर के अनुसार, "mysql_real_escape_string()
[है] सुरक्षित नहीं है जब SET NAMES
उपयोग किया जाता है।"
उनका स्पष्टीकरण, अपने ब्लॉग से :
<ब्लॉकक्वॉट>
SET NAMES का उपयोग आमतौर पर एन्कोडिंग को डिफ़ॉल्ट से बदलने के लिए किया जाता है जिसे एप्लिकेशन की आवश्यकता होती है। यह इस तरह से किया जाता है कि mysql_real_escape_string
इस बारे में नहीं जानता। इसका मतलब है कि यदि आप कुछ मल्टी बाइट एन्कोडिंग पर स्विच करते हैं जो बैकस्लैश को दूसरे तीसरे चौथे ... बाइट के रूप में अनुमति देता है, तो आप परेशानी में पड़ जाते हैं, क्योंकि mysql_real_escape_string
ठीक से नहीं बचता। UTF-8 सुरक्षित है…
एन्कोडिंग बदलने का सुरक्षित तरीका है mysql_set_charset
, लेकिन यह केवल नए PHP संस्करणों में उपलब्ध है
हालांकि, उन्होंने उल्लेख किया है कि UTF-8 सुरक्षित है।