2011-01-26 11 views
7

मैं एक शेल स्क्रिप्ट से insert क्वेरी निष्पादित कर रहा हूं जो एकाधिक फ़ाइलों से डेटा पढ़ता है। डेटा सम्मिलित करने के लिए में से कुछ पाठ में ' शामिल और MySQL देने त्रुटियोंमैं एक विशेष चरित्र कैसे डाल सकता हूं जैसे 'MySQL में?

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Development & Empowerment, Youth Affairs     
',' 
Himachal Pradesh     ' at line 1 

यह वास्तविक पाठ है रखता है: Women's Development & Empowerment, Youth Affairs

+0

उपयोग कर रहे हैं इस सूत्र आप मदद कर सकते हैं प्रदान की है बैश स्क्रिप्टिंग के माध्यम से कमांड लाइन] (http://stackoverflow.com/questions/4383135/escaping-mysql-command-lines-via-bash-scripting) – jujule

+0

यदि आप 'चरित्र के साथ' से बचें तो बेहतर होगा। इसकी वजह यह है कि कुछ डीबी एक्स: स्क्लेइट शो \ बच चरित्र के साथ त्रुटि दिखाता है। आप लिख सकते हैं: "महिलाओं के विकास और सशक्तिकरण, युवा मामलों।" – YROjha

उत्तर

14

आप उद्धरण से बचने के लिए तो जैसे, की जरूरत है:

'Women\'s Development & Empowerment, Youth Affairs' 

ध्यान दें, कि आप PHP की तरह एक भाषा से SQL विवरण पैदा कर रहे हैं, वहाँ आप के लिए यह करने के लिए उपलब्ध कार्य हैं।

उदाहरण के लिए, mysql_real_escape_string है, जो आपके लिए इसका ख्याल रखता है। ध्यान दें, तैयार किए गए बयानों को इस पर प्राथमिकता दी जानी चाहिए, क्योंकि उन गलत को प्राप्त करना मुश्किल है।

यह भी देखें:

1

यो '\

महिलाओं \ बैकस्लैश चरित्र', विकास & अधिकारिता रों युवा मामले

से बचने के लिए की जरूरत है
+0

मेरे पास लगभग 30k फाइलें हैं और मैं ढूंढने और प्रतिस्थापित करने के लिए sed का उपयोग नहीं करना चाहता हूं। यदि संभव हो तो मैं MySQL अंत में संभालना चाहूंगा। – charan

+0

आपको प्रोग्रामिंग भाषा का उपयोग करने की आवश्यकता होगी या एक खोज करें और फ़ाइल को 'with \' – sissonb

1

आपको अपने उद्धरण से बचने की जरूरत है। आप इसे अपनी सम्मिलित क्वेरी में दोगुना करके कर सकते हैं; यानी '' के बजाय 'का उपयोग करें। यह एक डबल कोट के बजाय दो एकल उद्धरण है।

3

आपको माइस्क्ल को पास करने से पहले इनपुट स्ट्रिंग से बचना होगा।

list of escape character रों है:

Character Escape Sequence 
\0 An ASCII NUL (0x00) character. 
\' A single quote (“'”) character. 
\" A double quote (“"”) character. 
\b A backspace character. 
\n A newline (linefeed) character. 
\r A carriage return character. 
\t A tab character. 
\Z ASCII 26 (Control-Z). See note following the table. 
\\ A backslash (“\”) character. 
\% A “%” character. See note following the table. 
\_ A “_” character. See note following the table. 
0

सर्वर साइड भाषाओं का क्या उपयोग कर रहा है?

ऐसी कई विधियां हैं जिनके माध्यम से आप स्ट्रिंग से बच सकते हैं, मैं इसे पसंद करूंगा!

उदाहरण के लिए: [पलायन MySQL: आप mysql_escape_string डेटा आप क्वेरी में प्रवेश कर रहे हैं का उपयोग कर सकते तो यह स्वचालित रूप से की तरह " ' "

mysql_escape_string charecters बच जाएंगे एक php function आप php

+0

को प्रतिस्थापित करने के लिए प्रतिस्थापित करें, मैं कुछ फ़ाइलों को संसाधित करने की कोशिश कर रहा हूं और कुछ डेटा को mysql में दबा सकता हूं। मैंने इसके लिए एक छोटी खोल लिपि लिखी है। – charan

संबंधित मुद्दे