MySQL प्रलेखन का कहना है कि यह होना चाहिए \'
। हालांकि, दोनों scite और mysql से पता चलता है कि ''
काम करता है। मैंने देखा कि यह काम करता है। मुझे क्या करना चाहिए?
\'
''
अगर मैं गलत नहीं हूं तो MySQL विशिष्ट है, ANSI SQL
MySQL प्रलेखन का कहना है कि यह होना चाहिए \'
। हालांकि, दोनों scite और mysql से पता चलता है कि ''
काम करता है। मैंने देखा कि यह काम करता है। मुझे क्या करना चाहिए?
\'
''
अगर मैं गलत नहीं हूं तो MySQL विशिष्ट है, ANSI SQL
जवाबों:
आपके द्वारा उद्धृत MySQL प्रलेखन वास्तव में आपके द्वारा उल्लिखित से थोड़ा अधिक कहता है। यह भी कहता है,
"
'
" के साथ उद्धृत स्ट्रिंग के अंदर एक "'
" के रूप में लिखा जा सकता है''
।
(इसके अलावा, आप तालिका 8.1 के MySQL 5.0 संस्करण से जुड़े हैं । विशेष वर्ण एस्केप अनुक्रम , और वर्तमान संस्करण 5.6 है - लेकिन वर्तमान तालिका 8.1। विशेष वर्ण एस्केप अनुक्रम बहुत समान दिखता है।)
मुझे लगता है कि backslash_quote (string)
पैरामीटर पर पोस्टग्रेज नोट सूचनात्मक है:
यह नियंत्रित करता है कि क्या
\'
एक स्ट्रिंग चिह्न को एक स्ट्रिंग शाब्दिक में दर्शाया जा सकता है । उद्धरण चिह्न का प्रतिनिधित्व करने के लिए पसंदीदा, SQL- मानक तरीका है इसे दोगुना करके (''
) लेकिन PostgreSQL ने ऐतिहासिक रूप से भी स्वीकार किया है\'
। हालांकि,\'
सुरक्षा जोखिम पैदा करता है ...
यह मेरे लिए कहता है कि एकल-उद्धरण से बचने के लिए बैकस्लैश का उपयोग करने की तुलना में दोगुना एकल-उद्धरण वर्ण का उपयोग करना बेहतर समग्र और दीर्घकालिक विकल्प है।
अब यदि आप भाषा का चुनाव, एसक्यूएल डेटाबेस का विकल्प और इसके गैर-मानक क्विर्क, और समीकरण के लिए क्वेरी फ्रेमवर्क का विकल्प भी जोड़ना चाहते हैं, तो आप एक अलग विकल्प के साथ समाप्त हो सकते हैं। आप अपने अवरोधों के बारे में ज्यादा जानकारी नहीं देते हैं।
मानक एसक्यूएल दोहरे-अप उद्धरणों का उपयोग करता है; MySQL को स्वीकार करना होगा कि यथोचित अनुपालन हो।
'He said, "Don''t!"'
'
"एक स्ट्रिंग के साथ उद्धृत अंदर" '
"के रूप में" लिखा जा सकता है ''
" । " "
" के साथ उद्धृत स्ट्रिंग के अंदर एक " "
" के रूप में लिखा जा सकता है ""
। बच चरित्र ("` `") द्वारा बोली चरित्र को प्राथमिकता दें।
मेरा मानना है कि user2087510 का मतलब था:
name = 'something'
name = name.replace("'", "\\'")
मैंने इसका उपयोग सफलता के साथ भी किया है।
यहाँ एक उदाहरण है:
SELECT * FROM pubs WHERE name LIKE "%John's%"
एकल उद्धरण को संलग्न करने के लिए बस दोहरे उद्धरण चिह्नों का उपयोग करें।
यदि आप एकल उद्धरण (और चरित्र से बचने की आवश्यकता) का उपयोग करने पर जोर देते हैं:
SELECT * FROM pubs WHERE name LIKE '%John\'s%'
तीन तरीके हैं जिनसे मैं अवगत हूं। पहला सबसे सुंदर नहीं है और दूसरा अधिकांश प्रोग्रामिंग भाषाओं में सामान्य तरीका है:
'I mustn''t sin!'
\
एकल उद्धरण से पहले बच चरित्र का उपयोग करें '
:'I mustn\'t sin!'
"I mustn't sin!"
\'
क्योंकि यह कई प्रोग्रामिंग भाषाओं द्वारा उपयोग किया जाता है, लेकिन ''
अधिक SQL बोलियों द्वारा समर्थित है, इसलिए संगतता के लिए विकल्प 1 का उपयोग करना बेहतर है। उदाहरण के लिए स्क्लाइट बैकस्लैश एस्केप से काम नहीं करता है।
स्ट्रिंग को बदलें
value = value.replace(/'/g, "\\'");
जहां मान आपका स्ट्रिंग है जो आपके डेटाबेस में संग्रहीत होने वाला है।
आगे की,
इसके लिए एनपीएम पैकेज, आप इसमें देख सकते हैं
मुझे लगता है कि अगर आपके पास एपोस्ट्रोफ के साथ कोई डेटा बिंदु है तो आप एपोस्ट्रोफ से पहले एक एपोस्ट्रोफ जोड़ सकते हैं
जैसे। 'यह जॉन की जगह है'
यहाँ MYSQL दो वाक्य मानता है 'यह जॉन की जगह है'
आप 'यह जॉन की जगह है' डाल सकते हैं। मुझे लगता है कि इस तरह से काम करना चाहिए।
PHP में मुझे mysqli_real_escape_string () का उपयोग करना पसंद है जो SQL कथन में उपयोग के लिए एक स्ट्रिंग में विशेष वर्णों से बच जाता है।
देख https://www.php.net/manual/en/mysqli.real-escape-string.php
संभवतः ऑफ-टॉपिक, लेकिन हो सकता है कि आप HTML फॉर्म से टेक्स्ट इनपुट को सैनिटाइज करने का तरीका ढूंढ रहे हों, ताकि जब कोई उपयोगकर्ता एपॉस्ट्रॉफी कैरेक्टर इनपुट करे, तो जब आप एसक्यूएल को टेक्स्ट लिखने की कोशिश करते हैं, तो यह एक त्रुटि नहीं है। एक DB में आधारित तालिका। ऐसा करने के कुछ तरीके हैं, और आप SQL इंजेक्शन के बारे में भी पढ़ना चाह सकते हैं, लेकिन PHP में एक सरल विकल्प htmlspecialchars () फ़ंक्शन का उपयोग करना है जो आपके सभी एपोस्ट्रोफों को बदल देगा '
जिसमें संभवतः आप स्टोर करना चाहते हैं वैसे भी।
''
या\'
सही के बारे में बात कर रहे हैं ?