MySQL, MySQLi और PDO में क्या अंतर है? [बन्द है]


128

MySQL, MySQLi और PDO में क्या अंतर है ?

PHP-MySQL के साथ उपयोग करने के लिए कौन सा सबसे उपयुक्त है?

जवाबों:


100

PHP से MySQL का उपयोग करने के तीन से अधिक लोकप्रिय तरीके हैं। यह कुछ सुविधाओं / अंतरों को रेखांकित करता है PHP: एक एपीआई चुनना :

  1. ( विकृत ) mysql फ़ंक्शन प्रक्रियात्मक हैं और मैन्युअल एस्केपिंग का उपयोग करते हैं।
  2. MySQLi ऑब्जेक्ट-ओरिएंटेड और प्रक्रियात्मक संस्करणों के साथ mysql फ़ंक्शन के लिए एक प्रतिस्थापन है। इसमें तैयार कथनों का समर्थन है।
  3. पीडीओ (PHP डेटा ऑब्जेक्ट) कई अन्य डेटाबेस के बीच MySQL के समर्थन के साथ एक सामान्य डेटाबेस अमूर्त परत है। यह तैयार किए गए स्टेटमेंट और डेटा को वापस करने में महत्वपूर्ण लचीलापन प्रदान करता है।

मैं तैयार बयानों के साथ पीडीओ का उपयोग करने की सलाह दूंगा। यह एक अच्छी तरह से डिज़ाइन किया गया API है और यदि आवश्यक हो तो आपको आसानी से किसी अन्य डेटाबेस (जिसमें ODBC का समर्थन करता है सहित ) को स्थानांतरित करने देगा ।


9
अक्सर भ्रम होता है कि प्रक्रियात्मक के लिए आपको mysql _ * () फ़ंक्शंस का उपयोग करना होगा जहाँ OO के लिए आप myqqli का उपयोग करते हैं! तथ्य यह है कि mysqli पूरी तरह से mysql के शुरुआती (PHP 4) कार्यान्वयन को प्रतिस्थापित करता है। प्रक्रियात्मक शैली और ओओ एक दोनों के साथ मायसिकली का उपयोग करना संभव है।
पैट्रिक अल्लार्ट

@ पैट्रिक, धन्यवाद। मैंने इसे ठीक कर दिया है।
मैथ्यू फ्लेशेन

46

MySQL बैकएंड तक पहुंचने के लिए वे अलग-अलग API हैं

  • Mysql ऐतिहासिक एपीआई है
  • Mysqli ऐतिहासिक API का नया संस्करण है। इसे बेहतर प्रदर्शन करना चाहिए और बेहतर कार्य करना चाहिए। साथ ही, API ऑब्जेक्ट-ओरिएंटेड है।
  • PDO_MySQL , PDO के लिए MySQL है। पीडीओ को पीएचपी में पेश किया गया है, और परियोजना का उद्देश्य सभी डेटाबेस एक्सेस के लिए एक सामान्य एपीआई बनाना है, इसलिए सिद्धांत रूप में आपको किसी भी कोड को बदलने के बिना आरडीएमएस के बीच माइग्रेट करने में सक्षम होना चाहिए (यदि आप अपने प्रश्नों में विशिष्ट आरडीबीएम फ़ंक्शन का उपयोग नहीं करते हैं) ), वस्तु-उन्मुख भी।

तो यह इस बात पर निर्भर करता है कि आप किस तरह का कोड बनाना चाहते हैं। यदि आप ऑब्जेक्ट-ओरिएंटेड लेयर या सादे फ़ंक्शंस पसंद करते हैं ...

मेरी सलाह होगी

  1. पीडीओ
  2. MySQLi
  3. माई एसक्यूएल

इसके अलावा मेरी भावना, mysql API को शायद भविष्य के रिलीज़ में हटा दिया जाएगा PHP


3
यह कोई भावना नहीं है: PHP7 ने mysql एपीआई को हटा दिया, PDO और mysqli को छोड़ दिया
मैनुअल

3

mysqli mysql का बढ़ाया संस्करण है।

पीडीओ विस्तार PHP में डेटाबेस तक पहुँचने के लिए एक हल्के, सुसंगत इंटरफ़ेस को परिभाषित करता है। प्रत्येक डेटाबेस ड्राइवर जो पीडीओ इंटरफ़ेस को लागू करता है, डेटाबेस-विशिष्ट सुविधाओं को नियमित एक्सटेंशन फ़ंक्शन के रूप में उजागर कर सकता है।


4
मैन्युअल फ़ाइल से कॉपी करना बहुत उपयोगी नहीं है।
जूडिंग

3

विशेष रूप से, MySQLi एक्सटेंशन पुराने MySQL एक्सटेंशन पर निम्नलिखित बेहद उपयोगी लाभ प्रदान करता है।

OOP इंटरफ़ेस (प्रक्रियात्मक के अलावा) तैयार स्टेटमेंट सपोर्ट ट्रांज़ैक्शन + स्टोर्ड प्रोसीजर सपोर्ट नाइस सिंटैक्स स्पीड इम्प्रूवमेंट एनहांस डिबगिंग

पीडीओ एक्सटेंशन

PHP डेटा ऑब्जेक्ट्स एक्सटेंशन एक डेटाबेस एब्स्ट्रक्शन लेयर है। विशेष रूप से, यह एक MySQL इंटरफ़ेस नहीं है, क्योंकि यह कई डेटाबेस इंजनों (निश्चित रूप से MYSQL सहित) के लिए ड्राइवर प्रदान करता है।

पीडीओ का उद्देश्य एक निरंतर एपीआई प्रदान करना है जिसका अर्थ है कि जब एक डेटाबेस इंजन बदला जाता है, तो यह प्रतिबिंबित करने के लिए कोड में परिवर्तन न्यूनतम होना चाहिए। पीडीओ का उपयोग करते समय, आपका कोड सामान्य रूप से कई डेटाबेस इंजनों में "बस काम" करेगा, बस उस ड्राइवर को बदलकर जिसका आप उपयोग कर रहे हैं।

क्रॉस-डेटाबेस के संगत होने के अलावा, पीडीओ भी MySQL ड्राइवर का उपयोग करते हुए तैयार किए गए कथनों, संग्रहीत प्रक्रियाओं और अधिक का समर्थन करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.