Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP के ऐडलैश और mysql(i)_escape_string में क्या अंतर है?

सबसे पहले:mysql_escape_string का उपयोग न करें , इसे हटा दिया गया है (किसी कारण से)!

यदि आपको किसी ऐसे लीगेसी एप्लिकेशन का समर्थन करना है जो mysql . के माध्यम से डेटाबेस से जुड़ता है एक्सटेंशन (जिसे बहिष्कृत कर दिया गया है ), mysql_real_escape_string का इस्तेमाल करें बजाय। अन्यथा तुरंत स्विच करें करने के लिए mysqli , जहां तैयार किए गए कथन और बाध्य पैरामीटर उपयोगकर्ता इनपुट से बचने के लिए एक अधिक मजबूत तंत्र प्रदान करते हैं।

उस ने कहा, इसका उत्तर mysql_real_escape_string और addslashes :

अंतर #1

addslashes MySQL कनेक्शन एन्कोडिंग के बारे में कुछ नहीं जानता। यदि आप इसे MySql कनेक्शन द्वारा उपयोग किए गए एन्कोडिंग के अलावा एक एन्कोडिंग का प्रतिनिधित्व करने वाले बाइट्स वाली स्ट्रिंग पास करते हैं, तो यह खुशी से वर्णों के मान वाले सभी बाइट्स से बच जाएगा ' , " , \ और \x00 . यह सभी वर्णों के समान नहीं हो सकता है ' , " , \ और \x00 यदि आप 8-बिट एन्कोडिंग और UTF-8 के अलावा किसी अन्य एन्कोडिंग का उपयोग कर रहे हैं। परिणाम यह होगा कि MySql द्वारा प्राप्त स्ट्रिंग दूषित हो जाएगी।

इस बग को ट्रिगर करने के लिए, iconv का उपयोग करके देखें अपने वेरिएबल को UTF-16 में बदलने के लिए और फिर इसे addslashes . के साथ एस्केप करने के लिए . देखें कि आपका डेटाबेस क्या प्राप्त करता है।

यह एक कारण है कि क्यों addslashes भागने के लिए इस्तेमाल नहीं किया जाना चाहिए।

अंतर #2

addslashes के विपरीत , mysql_real_escape_string \r characters वर्णों से भी बच निकलता है , \n , और \x1a . ऐसा प्रतीत होता है कि MySql से बात करते समय इन पात्रों से भी बचना होगा, अन्यथा एक विकृत क्वेरी का परिणाम हो सकता है

यही कारण है कि addslashes बचने के लिए इस्तेमाल नहीं किया जाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बिना किसी परवाह किए IN मान के लिए डिफ़ॉल्ट परिणाम लौटाएं

  2. कॉन्फ़िगरेशन संग्रहण सेटअप [फ़ाइल बनाम डेटाबेस]

  3. रेल पर रूबी - ऐसी फ़ाइल लोड नहीं कर सकता - mysql2/2.2/mysql2 (LoadError)

  4. MySQL सूची मूल्यों पर रिकॉर्ड आधार लाने के लिए क्वेरी का चयन करें

  5. MySQL अद्वितीय बाधा जोड़ें