SQL स्ट्रिंग एस्केप
सिंगल-कोट वाली SQL स्ट्रिंग के भीतर इस्तेमाल के लिए टेक्स्ट एस्केप करें: कोट्स दोगुने करें (मानक SQL) या MySQL बैकस्लैश एस्केप चुनें। वैकल्पिक रूप से कोट्स में लपेटें।
हर ' को '' में बदला जाता है। PostgreSQL, SQLite, SQL Server, Oracle और NO_BACKSLASH_ESCAPES वाले MySQL में काम करता है। ऐप्लिकेशन कोड में parameterized queries का उपयोग करें।
पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड नहीं होता।
संबंधित टूल्स
सभी देखेंSQL स्ट्रिंग एस्केप क्या है?
SQL Escape किसी मूल टेक्स्ट मान को ऐसे रूप में बदलता है जिसे सिंगल-कोट वाली SQL स्ट्रिंग लिटरल के भीतर रखा जा सके। मानक मोड हर सिंगल कोट को दोगुना करता है (O'Reilly → O''Reilly); MySQL मोड mysql_real_escape_string() की तरह बैकस्लैश एस्केप इस्तेमाल करता है। यह हाथ से SQL लिखने के लिए है – एप्लिकेशन कोड में इसके बजाय पैरामीटराइज़्ड क्वेरी इस्तेमाल करें।
SQL स्ट्रिंग एस्केप का उपयोग कैसे करें
- एस्केप शैली चुनें: मानक SQL या MySQL।
- चाहें तो परिणाम को सिंगल कोट्स में लपेटें चुनें।
- मूल मान इनपुट बॉक्स में टाइप या पेस्ट करें।
- एस्केप किया हुआ आउटपुट अपनी SQL में कॉपी करें।
उदाहरण
O'Reilly \ x
O''Reilly \ x
मानक SQL मोड: कोट्स दोगुने होते हैं, बैकस्लैश वैसा ही रहता है।
SQL स्ट्रिंग एस्केप का उपयोग कब करें
एक बार के SQL स्टेटमेंट, सीड डेटा या ऐसे माइग्रेशन स्क्रिप्ट लिखने के लिए इसका उपयोग करें जिनमें एपॉस्ट्रॉफ़ी वाला टेक्स्ट हो। एप्लिकेशन में SQL-इंजेक्शन से बचाव के लिए स्ट्रिंग एस्केपिंग का उपयोग न करें – बाउंड पैरामीटर वाले प्रिपेयर्ड स्टेटमेंट इस्तेमाल करें। आइडेंटिफ़ायर (टेबल/कॉलम नाम) एस्केप करना अलग समस्या है और यहाँ शामिल नहीं।
SQL स्ट्रिंग एस्केप कैसे काम करता है
मानक SQL (ANSI; PostgreSQL, SQLite, SQL Server, Oracle और NO_BACKSLASH_ESCAPES वाला MySQL): हर ' बन जाता है ''; बैकस्लैश अक्षरशः होते हैं और नहीं बदलते। MySQL मोड (MySQL/MariaDB की डिफ़ॉल्ट सेटिंग): \0, नई पंक्ति, कैरिज रिटर्न, बैकस्लैश, ', " और Ctrl+Z (0x1A) के आगे बैकस्लैश लगता है, जो mysql_real_escape_string() से मेल खाता है। मानक मोड में पंक्ति विराम असली पंक्ति विराम ही रहते हैं, जो SQL लिटरल के भीतर मान्य है।
सामान्य उपयोग मामले
- मैन्युअल INSERT में O'Reilly जैसे नाम डालना
- कोट किए टेक्स्ट वाले सीड या माइग्रेशन स्क्रिप्ट लिखना
- MySQL डंप के लिए लिटरल स्ट्रिंग तैयार करना
- ANSI और MySQL एस्केपिंग का अंतर समझना
सुरक्षा नोट
सब कुछ आपके ब्राउज़र में ही चलता है; आप जो कोड पेस्ट करते हैं वह कहीं अपलोड नहीं होता।
अक्सर पूछे जाने वाले प्रश्न
क्या एस्केपिंग SQL इंजेक्शन रोकने के लिए काफ़ी है?
नहीं। पैरामीटराइज़्ड क्वेरी इस्तेमाल करें; एस्केपिंग में गलती आसान है और यह सर्वर सेटिंग व कैरेक्टर सेट पर निर्भर करती है।
PostgreSQL के लिए कौन-सा मोड चुनूँ?
मानक SQL। PostgreSQL 9.1 से सामान्य स्ट्रिंग में बैकस्लैश अक्षरशः माने जाते हैं।
MySQL को अलग एस्केपिंग क्यों चाहिए?
डिफ़ॉल्ट रूप से MySQL स्ट्रिंग के भीतर बैकस्लैश को एस्केप कैरेक्टर मानता है, इसलिए बैकस्लैश भी एस्केप करने पड़ते हैं।