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

PHP MySQL स्ट्रिंग को ठीक से कैसे स्टोर/एस्केप करें

सुनिश्चित करें कि आपने double_encode सेट किया है करने के लिए false , अन्यथा पहले से ही एन्कोडेड स्ट्रिंग्स को फिर से एन्कोड किया जाएगा, & & . में . फिर जब आप html_entity_decode . का उपयोग करने के बाद इसे प्रदर्शित करने जाते हैं , ऐसा प्रतीत होगा जैसे यह अभी भी एन्कोड किया गया था।

अवांछित परिणाम:http://ideone.com/uQxuAM

htmlentities($string, ENT_QUOTES, 'UTF-8', false); का उपयोग करना यह सुनिश्चित करेगा कि ऐसा नहीं होगा।

फिर html_entity_decode($string, ENT_QUOTES, 'UTF-8'); का उपयोग करें मान प्रदर्शित करने के लिए।

डेमो:http://ideone.com/8Jo7YA

हालाँकि, MySQL डेटाबेस में डिकोड किए गए मानों को संग्रहीत करने में पूरी तरह से सक्षम है।

आप कभी भी अपने डेटाबेस में htmlentities-एन्कोडेड स्ट्रिंग्स को संग्रहीत नहीं करना चाहते हैं। क्या होता है जब आप एक CSV या PDF जनरेट करना चाहते हैं, एक ईमेल भेजना चाहते हैं, या कुछ भी जो HTML नहीं है?

इस तथ्य के अलावा कि आपको डेटा को एन्कोड करने की प्रोग्रामिंग को दोगुना करना है, डेटाबेस में डेटा की मात्रा में वृद्धि करना है, फिर भी आउटपुट को डीकोड करने की आवश्यकता है, ऑनलाइन बहुत सारे लेख हैं जो आपको जवाब क्यों नहीं देना चाहिए।

इसलिए आपको केवल HTML में परिणामी डेटा आउटपुट प्रदर्शित करने के लिए मानों को एन्कोड करने की आवश्यकता है।

इसके बजाय आपको mysqli_real_escape_string . का उपयोग करके इनपुट से बचना चाहिए

$string = '<a href="/path/to/file?a=b&foo=bar#baz">My Link</a>';
$sql = "INSERT INTO links (link)"
     . "VALUES(" . mysqli_real_escape_string($string) . "')";

या बेहतर अभी तक तैयार बयानों का उपयोग करें

$stmt = $mysqli->prepare("INSERT INTO links (link) VALUES(?)");
$stmt->bind_param("s", $string);
$stmt->execute();

फिर जो वास्तव में डेटाबेस में जोड़ा गया था उसे प्रदर्शित करने के लिए आउटपुट को एक सफल संदेश के रूप में प्रारूपित करने के लिए।

$html = "<div>Added Link: " . htmlentities($string, ENT_QUOTES, 'UTF-8', false) . "</div>";

अब html_entity_decode . का उपयोग करने की कोई आवश्यकता नहीं है ब्राउज़र में एचटीएमएल प्रस्तुत करने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कोडनिर्देशक MySQL में पंक्तियों के रूप में बहुआयामी सरणी सम्मिलित करना

  2. MySQL FULLTEXT क्वेरी समस्या

  3. OS X 10.10 पर MySQL को रोकने में असमर्थ

  4. SQL - दो अलग-अलग तालिकाओं से पंक्तियों का चयन करें

  5. दो अलग-अलग स्थानों में चल रहे दो mysql सर्वर के बीच डेटाबेस लिंक