2011-08-08 23 views
5

लोग यह उल्लेख करते रहते हैं कि MySQL से निपटने के दौरान मुझे अपने PHP में पीडीओ का उपयोग करना चाहिए, मैंने पहले कभी इस बारे में नहीं सुना है।पीडीओ क्या है और मुझे इसका उपयोग क्यों करना चाहिए?

पीडीओ क्या है? इसका उपयोग कैसे किया जाता है और पेशेवर और विपक्ष क्या हैं?

धन्यवाद,

+0

(http [बनाम पीडीओ mysql] के संभावित डुप्लिकेट: // stackoverflow.com/questions/866860/mysql-vs-pdo) –

+0

MySQLi को भी देखें। PHP के भीतर MySQL तक पहुंचने के लिए यह एक ओओपी कक्षा है। कच्चे एसक्यूएल और पीडीओ के बीच यह मिश्रण है। –

+0

@ टी। ब्रायन जोन्स आप तैयार कथन के बारे में बात कर रहे हैं? –

उत्तर

0

http://php.net/manual/en/book.pdo.php

पीएचपी डेटा ऑब्जेक्ट (पीडीओ) विस्तार एक हल्के, लगातार PHP में डेटाबेस तक पहुँचने के लिए इंटरफेस को परिभाषित करता।

पीडीओ डेटा-एक्सेस एब्स्ट्रक्शन लेयर प्रदान करता है, जिसका अर्थ यह है कि चाहे आप किस डेटाबेस का उपयोग कर रहे हों, आप क्वेरी जारी करने और डेटा लाने के लिए समान फ़ंक्शंस का उपयोग करते हैं। पीडीओ डेटाबेस अमूर्तता प्रदान नहीं करता है; यह एसक्यूएल को फिर से लिखता नहीं है या अनुपलब्ध सुविधाओं का अनुकरण नहीं करता है। यदि आपको उस सुविधा की आवश्यकता है तो आप को एक पूर्ण उड़ा हुआ अमूर्त परत का उपयोग करना चाहिए।

0

पीडीओ MySQL प्रश्नों को लिखने और निष्पादित करने के लिए एक ऑब्जेक्ट उन्मुख वर्ग है। यह जटिलता की एक अतिरिक्त परत की तरह प्रतीत हो सकता है, लेकिन पीडीओ वास्तव में आपको अपने PHP में प्रश्नों को और अधिक लिखने की अनुमति देता है, और प्रोग्रामेटिक रूप से प्रश्न लिखने की अनुमति देता है (अन्य कोड आपके लिए आपकी क्वेरी की विभिन्न पंक्तियां बनाता है)।

पीडीओ आपके एसक्यूएल प्रश्नों से बचने जैसे कई सुरक्षा मुद्दों का भी ख्याल रखता है। यदि आप पीडीओ जैसे डाटाबेस एबस्ट्रक्शन लेयर का उपयोग नहीं करते हैं, और यदि आप कोशिश करते हैं, तो आप कभी भी इन चीजों में से कोई भी नहीं करेंगे, आप आसानी से भूल सकते हैं, या गलत तरीके से कर सकते हैं।

यदि आप सुरक्षा से संबंधित नहीं हैं (SQL injection जैसी चीजें) और आप प्राकृतिक माईएसQL क्वेरीज लिखने में सक्षम हैं, तो आपको इसके बारे में चिंता करने की आवश्यकता नहीं है। इसे सीखना भविष्य में चीजों को आसान बना सकता है जब आप ढांचे का उपयोग करने वाली अधिक संरचित परियोजनाओं पर काम करते हैं।

14

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

विस्तृत करने के लिए नीचे दिए गए कोड पर एक नज़र डालें।

MySQL करने के लिए एक कनेक्शन स्थापित करने पीडीओ का उपयोग करना:

$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD); 

यह है कि, कनेक्शन स्थापित हो जाने और आप एक तालिका उपयोगकर्ता आप सिर्फ दो की जरूरत से परिणाम लाने के लिए उदाहरण के लिए प्रश्नों के प्रदर्शन के लिए $ DBH का पुन: उपयोग कर सकता है कोड की रेखा।

$sth = $dbh->query('SELECT id,name,email FROM users'); 
$user = $sth->fetch(PDO::FETCH_ASSOC); 

अब $user सभी मूल्यों एक साहचर्य सरणी के रूप में दिलवाया होगा।

डेटाबेस में मूल्य डालने के लिए आपको निम्न कार्य करने की आवश्यकता है।

$sth = $dbh->prepare('INSERT INTO users(name,email) VALUES(:name, :email)'); 
$sth->bindParam(':name', 'My Name'); 
$sth->bindParam(':email', '[email protected]'); 
$sth->execute(); 

ऊपर कोड प्लेसहोल्डर, इस तरह से पीडीओ आप कई कमजोरियों से सुरक्षित रखेगा के रूप में यह आप MySQL इंजेक्शन से दूर रखेंगे नामित उपयोग कर रही है। आप netttus द्वारा इस ट्यूटोरियल पर एक नजर है आरंभ करने के लिए, वे समझा दिया है यह बहुत अच्छी तरह से, इस लेख पीडीओ के बारे में अपने सभी दुविधाओं समझा जाएगा

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

+0

इब्राहिम, क्या आप जानते हैं कि $ sth किसके लिए खड़ा है? और के लिए कॉलन क्या हैं? उदाहरण:: नाम,: emai। मैं इस बिंदप्रम को भी समझ नहीं पा रहा हूं। धन्यवाद! –

+2

'$ sth' पीडीओ प्रश्नों के लिए 'स्टेटमेंट हैंडल' को संदर्भित करने के लिए उपयोग किया जाने वाला एक चर है, 'नाम, ईमेल' आदि प्लेसहोल्डर्स हैं, बाइंडप्रैम उपर्युक्त उदाहरण में 'मेरा नाम' के साथ 'नाम' को प्रतिस्थापित करता है। आपको उपर्युक्त आलेख के माध्यम से जाना चाहिए, लेखक ने कुछ बहुत अच्छे अंक दिए हैं जो आपको –

+0

अवधारणा को समझने में मदद करेंगे, मैंने पूरे लेख को पढ़ा है। यह पीडीओ बहुत उन्नत और सुरक्षित अभ्यास प्रतीत होता है, लेकिन मुझे समझ में नहीं आया कि प्लेसहोल्डर्स MySQL की रक्षा कैसे करता है और इंजेक्शन से रहता है। वे नियमित चर की तरह दिखते हैं? –

संबंधित मुद्दे