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

mysql एक्सटेंशन को हटा दिया गया है और भविष्य में हटा दिया जाएगा:इसके बजाय mysqli या PDO का उपयोग करें

  1. ऐसा क्यों हो रहा है?

    संपूर्ण ext/mysql PHP एक्सटेंशन, जो उपसर्ग mysql_ . के साथ नामित सभी फ़ंक्शन प्रदान करता है , को PHP v5.5.0 में आधिकारिक तौर पर हटा दिया गया था और PHP v7 में निकाला गया

    यह मूल रूप से MySQL v3.20 के लिए PHP v2.0 (नवंबर 1997) में पेश किया गया था, और 2006 से कोई नई सुविधाएँ नहीं जोड़ी गई हैं। नई सुविधाओं की कमी के साथ जटिल सुरक्षा कमजोरियों के बीच ऐसे पुराने कोड को बनाए रखने में कठिनाइयाँ हैं।

    मैनुअल में जून 2011 से नए कोड में इसके उपयोग के खिलाफ चेतावनियां शामिल हैं।

  2. मैं इसे कैसे ठीक कर सकता हूं?

    जैसा कि त्रुटि संदेश से पता चलता है, दो अन्य MySQL एक्सटेंशन हैं जिन पर आप विचार कर सकते हैं:MySQLi और PDO_MySQL , जिनमें से किसी एक का उपयोग ext/mysql . के स्थान पर किया जा सकता है . दोनों v5.0 के बाद से PHP कोर में हैं, इसलिए यदि आप ऐसे संस्करण का उपयोग कर रहे हैं जो इन बहिष्करण त्रुटियों को फेंक रहा है तो आप लगभग निश्चित रूप से तुरंत उनका उपयोग करना शुरू कर सकते हैं- यानी। बिना किसी इंस्टॉलेशन प्रयास के।

    वे थोड़े अलग हैं, लेकिन पुराने एक्सटेंशन पर कई लाभ प्रदान करते हैं, जिसमें लेनदेन, संग्रहीत प्रक्रियाओं और तैयार बयानों के लिए एपीआई समर्थन शामिल है (जिससे सबसे अच्छा तरीका SQL इंजेक्शन हमलों को हराने के लिए ) PHP डेवलपर उल्फ वेंडेल ने एक संपूर्ण तुलना लिखी है विशेषताएं

    Hashphp.org के पास ext/mysql से माइग्रेट करने पर उत्कृष्ट ट्यूटोरियल है। पीडीओ को

  3. मैं समझता हूं कि error_reporting . सेट करके बहिष्करण त्रुटियों को दबाना संभव है php.ini . में E_DEPRECATED को बाहर करने के लिए :

    error_reporting = E_ALL ^ E_DEPRECATED
    

    अगर मैं ऐसा करूँ तो क्या होगा?

    हां, ऐसे त्रुटि संदेशों को दबाना और पुराने ext/mysql . का उपयोग जारी रखना संभव है फिलहाल के लिए विस्तार। लेकिन आपको वास्तव में ऐसा नहीं करना चाहिए —यह डेवलपर्स की ओर से एक अंतिम चेतावनी है कि एक्सटेंशन को PHP के भविष्य के संस्करणों के साथ बंडल नहीं किया जा सकता है (वास्तव में, जैसा कि पहले ही उल्लेख किया गया है, इसे PHP v7 से हटा दिया गया है)। इसके बजाय, आपको अपने आवेदन को अभी migrate माइग्रेट करने के लिए इस अवसर का लाभ उठाना चाहिए , इससे पहले कि बहुत देर हो जाए।

    यह भी ध्यान दें कि यह तकनीक सभी को दबा देगी E_DEPRECATED संदेश, न कि केवल वे जो ext/mysql . से संबंधित हैं एक्सटेंशन:इसलिए आप PHP में आने वाले अन्य परिवर्तनों से अनजान हो सकते हैं जो आपके एप्लिकेशन कोड को प्रभावित करेंगे। निश्चित रूप से, PHP के त्रुटि नियंत्रण ऑपरेटर -अर्थात। प्रासंगिक लाइन को @ . के साथ तैयार करना —हालाँकि यह सभी को दबा देगा उस अभिव्यक्ति द्वारा उठाई गई त्रुटियां, न कि केवल E_DEPRECATED वाले।

आपको क्या करना चाहिए?

  • आप एक नया प्रोजेक्ट शुरू कर रहे हैं।

    बिल्कुल कोई कारण नहीं है ext/mysql use का उपयोग करने के लिए —इसके बजाय दूसरे में से एक, अधिक आधुनिक, एक्सटेंशन चुनें और उनके द्वारा प्रदान किए जाने वाले लाभों का लाभ उठाएं।

  • आपके पास (आपका अपना) लीगेसी कोडबेस है जो वर्तमान में ext/mysql . पर निर्भर करता है .

    प्रतिगमन परीक्षण करना बुद्धिमानी होगी:आपको वास्तव में कुछ भी नहीं बदलना चाहिए (विशेष रूप से PHP को अपग्रेड करना) जब तक आप प्रभाव के सभी संभावित क्षेत्रों की पहचान नहीं कर लेते, उनमें से प्रत्येक के आसपास योजना बनाई और फिर एक स्टेजिंग वातावरण में अपने समाधान का पूरी तरह से परीक्षण किया।

    • अच्छे कोडिंग अभ्यास के बाद, आपके एप्लिकेशन को शिथिल एकीकृत/मॉड्यूलर फैशन में विकसित किया गया था और डेटाबेस एक्सेस विधियां सभी एक ही स्थान पर स्व-निहित हैं जिन्हें आसानी से नए एक्सटेंशन में से किसी एक के लिए स्वैप किया जा सकता है।

      दूसरे में से एक, अधिक आधुनिक, एक्सटेंशन का उपयोग करने के लिए इस मॉड्यूल को फिर से लिखने में आधा घंटा बिताएं; अच्छी तरह से परीक्षण करें। आप बाद में उनके द्वारा प्रदान किए जाने वाले लाभों का लाभ उठाने के लिए और परिशोधन शुरू कर सकते हैं।

    • डेटाबेस पहुंच विधियां हर जगह बिखरी हुई हैं और नए एक्सटेंशन में से किसी एक के लिए इसे आसानी से स्वैप नहीं किया जा सकता है।

      विचार करें कि क्या आपको इस समय वास्तव में PHP v5.5 में अपग्रेड करने की आवश्यकता है।

      आपको ext/mysql . को बदलने की योजना बनाना शुरू कर देना चाहिए दूसरे में से एक के साथ, अधिक आधुनिक, एक्सटेंशन ताकि आप उनके द्वारा प्रदान किए जाने वाले लाभों का पुरस्कार प्राप्त कर सकें; आप इसे अपने डेटाबेस एक्सेस विधियों को अधिक मॉड्यूलर संरचना में पुन:सक्रिय करने के अवसर के रूप में भी उपयोग कर सकते हैं।

      हालांकि, अगर आपके पास तत्काल . है PHP को तुरंत अपग्रेड करने की आवश्यकता है, आप कुछ समय के लिए बहिष्करण त्रुटियों को दबाने पर विचार कर सकते हैं:लेकिन पहले किसी भी अन्य बहिष्करण त्रुटियों की पहचान करना सुनिश्चित करें जिन्हें फेंका जा रहा है।

  • आप किसी तृतीय पक्ष प्रोजेक्ट का उपयोग कर रहे हैं जो ext/mysql . पर निर्भर करता है .

    विचार करें कि क्या आपको इस समय वास्तव में PHP v5.5 में अपग्रेड करने की आवश्यकता है।

    जांचें कि क्या डेवलपर ने इस विशिष्ट समस्या के संबंध में कोई सुधार, समाधान या मार्गदर्शन जारी किया है; या, यदि नहीं, तो इस मामले को उनके ध्यान में लाकर उन पर ऐसा करने के लिए दबाव डालें। यदि आपके पास तत्काल . है 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. MySQL क्वेरी का उपयोग करके संपूर्ण तालिका में टेक्स्ट ढूंढें और बदलें

  2. मैं तैयार पीडीओ स्टेटमेंट का उपयोग करके ORDER BY params कैसे सेट करूं?

  3. SQL सर्वर डेटाबेस को MySQL में कैसे निर्यात करें?

  4. MySQL, PostgreSQL और Redis™ के लिए स्केलग्रिड DigitalOcean समर्थन अब उपलब्ध है

  5. Moodle के लिए MySQL की निगरानी के लिए युक्तियाँ