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

PHP से MySQL में बाइनरी डेटा डालने पर bin2hex का उपयोग क्यों करें?

यह मेरे लिए एक शहरी किंवदंती की तरह लगता है।

bin2hex() इनपुट में प्रत्येक बाइट को दो . में मैप करता है आउटपुट में बाइट्स ('a' -> '61' ), इसलिए आपको क्वेरी निष्पादित करने वाली स्क्रिप्ट की स्मृति में उल्लेखनीय वृद्धि पर ध्यान देना चाहिए - इसे सम्मिलित करने के लिए बाइनरी डेटा की बाइट लंबाई जितनी अधिक मेमोरी का उपयोग करना चाहिए।

इसके अलावा, इसका तात्पर्य यह है कि चल रहा है bin2hex() एक लंबी स्ट्रिंग पर बहुत लगता है mysql_real_escape string() चलाने से ज्यादा लंबा , जो - जैसा कि MySQL के दस्तावेज़ों में बताया गया है - बस 6 वर्णों से बच निकलता है:NULL , \r , \n , \ , , और 'कंट्रोल-जेड'।

वह PHP भाग के लिए था, अब MySQL के लिए:सर्वर को डेटा को सही ढंग से संग्रहीत करने के लिए रिवर्स ऑपरेशन करने की आवश्यकता है। किसी भी फ़ंक्शन को उलटने में मूल ऑपरेशन जितना लंबा समय लगता है - mysql_real_escape_string() का उल्टा फ़ंक्शन बच गए मानों को बदलने की जरूरत है (\\ ) न छूटे लोगों के साथ (\ ), जबकि bin2hex() . के विपरीत प्रत्येक बाइट टपल को प्रतिस्थापित करने की आवश्यकता होगी एक नए बाइट के साथ।

कॉल करने के बाद से mysql_real_escape_string() बाइनरी डेटा पर सुरक्षित है (MySQL और PHP के दस्तावेज़ों के अनुसार या यहां तक ​​​​कि जब यह मानते हुए कि ऑपरेशन ऊपर सूचीबद्ध लोगों के अलावा कोई अन्य रूपांतरण नहीं करता है), तो इस तरह के एक महंगे ऑपरेशन को करने का कोई मतलब नहीं होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत कार्यविधि का उपयोग करके मेरे द्वारा वांछित मान को पुनः प्राप्त नहीं किया जा सकता है

  2. 8 यादृच्छिक वर्णों के अद्वितीय तार डालें

  3. MySQL रूट पासवर्ड बदलें

  4. डेटाबेस से प्राप्त करें लेकिन केवल पिछले 30 दिन

  5. पीएचपी - नोटिस:अपरिभाषित सूचकांक: