2010-04-06 25 views
13

क्या कोई मुझे बता सकता है कि विशेष वर्णों को एक MySQL डेटाबेस में कैसे डालना है? मैंने एक PHP स्क्रिप्ट बनाई है जिसका अर्थ डेटाबेस में कुछ शब्दों को सम्मिलित करना है, हालांकि यदि शब्द में 'है तो उसे सम्मिलित नहीं किया जाएगा।डेटाबेस में विशेष वर्ण कैसे डालें?

मैं PHPmyAdmin का उपयोग करते समय विशेष वर्णों को ठीक से सम्मिलित कर सकता हूं, लेकिन यह PHP के माध्यम से उन्हें डालने पर काम नहीं करता है। क्या यह हो सकता है कि PHP विशेष वर्णों को किसी और चीज़ में बदल रहा है? यदि हां, तो क्या उन्हें सही तरीके से डालने का कोई तरीका है?

+0

यू सिर्फ कोड के भाग पेस्ट कर सकते हैं के लिए उपयोग जहां paarticular चर संसाधित और सम्मिलित किया जाता है? –

उत्तर

24
$insert_data = mysql_real_escape_string($input_data); 

यह मानते हुए कि आप डेटा के रूप में $input_data

+0

वह मुझे एक साधारण एक पंक्ति उदाहरण लिखने के लिए सिखाएगा। – zaf

+0

मुझे पता है! जब मैंने देखा कि तुमने मुझे मार दिया तो मैंने लगभग अपना जवाब हटा दिया। – Anthony

+0

सही ... अभी भी मेरे दिन को बचाया। धन्यवाद! यह –

9

क्या आप भाग रहे हैं? Mysql_real_escape_string() फ़ंक्शन का प्रयास करें और यह विशेष वर्णों को संभालेगा।

+0

+1 मुझे इसे मारने के लिए +1। मैंने पाया है कि जब मैं बैकटिक का उपयोग अपने इनलाइन कोड को प्रारूपित करने के लिए करता हूं, तो इससे अधिक वोट मिलते हैं, अगर इससे मदद मिलती है। – Anthony

+1

सहानुभूति उत्थान के बाद से आपने पहले उत्तर दिया लेकिन उदाहरण नहीं दिया। जैसे कि यह एक प्रश्न था जिसे PHP.net – dscher

+0

@dscher धन्यवाद का उपयोग करके तेज़ी से उत्तर नहीं दिया जा सका! अगर आपके जैसे ही ज्यादा लोग थे! ;) – zaf

2

संग्रहीत किया है शायद "mysql_real_escape_string()" यू

4

आप सबसे अधिक संभावना एसक्यूएल स्ट्रिंग से बचने कर रहे हैं के लिए काम करेंगे, समान करने के लिए:

SELECT * FROM `table` WHERE `column` = 'Here's a syntax error!' 

आपको उद्धरणों से बचने की आवश्यकता है, जैसे कि:

SELECT * FROM `table` WHERE `column` = 'Here\'s a syntax error!' 

mysql_real_escape_string() यह आपके लिए संभालता है।

6

उपयोग mysql_real_escape_string

तो mysql_real_escape_string क्या क्या करता है?

यह PHP लाइब्रेरी फ़ंक्शन निम्न वर्णों में बैकस्लाश को पूर्ववत करता है: \ n, \ r, \, \ x00, \ x1a, 'और "। महत्वपूर्ण हिस्सा यह है कि सिंगल और डबल कोट्स बच निकले हैं, क्योंकि ये पात्र हैं जो कमजोरियों को खोलने की संभावना रखते हैं।

कृपया स्वयं को sql_injection के बारे में सूचित करें। आप इस link को

+1

फिर भी एक और बेवकूफ लेख जिसका लेखक कोई सुराग नहीं है। ड्रॉप टेबल के बारे में वही पुरानी कहानी (नए लोगों को डराने के लिए अच्छा, हाँ, लेकिन हालांकि कभी काम नहीं करते), वही stupidQuery फ़ंक्शन जो जादू उद्धरणों की देखभाल करता है। और सामान्य रूप से गैर-स्ट्रिंग मानों के बारे में कोई शब्द नहीं। और $ BADWORDS की सबसे बड़ी protaction कभी –

+0

ठीक है, यह नहीं सबसे अच्छा लेख है, लेकिन यह मूल बातें (मैं इसे एक तेजी से गूगल खोज से खोदा) आप है, तो आप एक बेहतर लेख का लिंक दे सकते हैं के साथ परिचित होना चाहिए। –

+0

ठीक है मैंने कुछ लिखा है, यह SO उत्तर का रूप है। http://stackoverflow.com/questions/2589820/is-it-necessary-to-use-mysql-real-escape-string-when-magic-quotes-gpc-is-on –

5

के रूप में उपयोग कर सकते हैं आप उन्हें सीधे एक प्रश्न में चिपका रहे हैं। उदाहरण के लिए आप अपरिवर्तनीय फ़ंक्शन का उपयोग करके उन्हें "बचाना" चाहिए - mysql_real_escape_string, mysqli_real_escape_string या PDO::quote आपके द्वारा उपयोग किए जा रहे एक्सटेंशन के आधार पर।

3

ध्यान दें कि के रूप में दूसरों mysql_real_escape_string (ने बताया है) समस्या (के रूप में होगा addslashes) का समाधान होगा, हालांकि आप हमेशा सुरक्षा कारणों के लिए mysql_real_escape_string() का उपयोग करना चाहिए - पर विचार करें:

SELECT * FROM valid_users WHERE username='$user' AND password='$password' 

क्या होगा अगर ब्राउज़र भेजता

user="admin' OR (user=''" 
password="') AND ''='" 

क्वेरी हो जाता है:

SELECT * FROM valid_users 
WHERE username='admin' OR (user='' AND password='') AND ''='' 

यानी सुरक्षा जांच पूरी तरह से बाईपास की जाती है।

सी

0
$var = mysql_real_escape_string("data & the base"); 
$result = mysql_query('SELECT * FROM php_bugs WHERE php_bugs_category like "%' .$var.'%"'); 
+0

यह संभालने के लिए एक कामकाजी उदाहरण है php mysql.you में विशेष वर्ण बदल सकते हैं और 'यह ठीक काम करेगा –

+0

आप अपना उत्तर संपादित कर सकते हैं और स्पष्टीकरण टिप्पणी जोड़ सकते हैं :-) – kleopatra

0

इस का उपयोग करें: htmlentities($_POST['field']);

बस केवल। यह विशेष वर्ण के लिए:

CI htmlentities($this->input->post('control_name'));

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