2009-09-21 26 views
30

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

उत्तर

31

pdo::prepare() दस्तावेज़ीकरण पर दो शानदार उदाहरण हैं।

मैंने उन्हें यहां शामिल किया है और उन्हें थोड़ा सा सरल बना दिया है।

यह ? पैरामीटर का उपयोग करता है। $dbh मूल रूप से एक पीडीओ वस्तु है। और आप जो कर रहे हैं वह क्रमशः पहले और दूसरे प्रश्न चिह्न में मूल्य 150 और 'red' डाल रहा है।

/* Execute a prepared statement by passing an array of values */ 
$sth = $dbh->prepare('SELECT name, colour, calories 
         FROM fruit 
         WHERE calories < ? AND colour = ?'); 

$sth->execute(array(150, 'red')); 

$red = $sth->fetchAll(); 

यह नामित पैरामीटर का उपयोग करता है और थोड़ा अधिक जटिल है।

/* Execute a prepared statement by passing an array of values */ 
$sql = 'SELECT name, colour, calories 
     FROM fruit 
     WHERE calories < :calories AND colour = :colour'; 

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$sth->execute(array(':calories' => 150, ':colour' => 'red')); 

$red = $sth->fetchAll(); 
+1

आपके 2 उदाहरणों में, दूसरा 1 बेहतर है? – JasonDavis

+0

सरल प्रश्नों के लिए,? ठीक है। लेकिन ध्यान दें कि तैयार बयान प्रत्येक मूल्य के चारों ओर एक उद्धरण जोड़ देगा। जहां दूसरा उदाहरण है, आप बता सकते हैं कि एक मान एक संख्या है और दूसरा मान एक स्ट्रिंग है। (हालांकि यह यहां नहीं दिखाया गया है) –

+0

बस इस बात पर निर्भर करता है कि आप इसके साथ क्या करना चाहते हैं ... यदि आप एक ही मान का उपयोग एक से अधिक बार करना चाहते हैं, तो आपको नाम पैरामीटर का उपयोग करना चाहिए। ऐसा इसलिए है क्योंकि यदि आप इसका उपयोग करते हैं, तो यह उन्हें दिखाई देने वाले क्रम में बस उन्हें सम्मिलित करता है। यदि आपने नामित पैरामीटर का उपयोग किया है, तो आप उन्हें एक से अधिक बार उपयोग कर सकते हैं। सरल प्रश्नों के लिए बस एक अधिक संघनित संस्करण हैं। किसी को किसी अन्य तरीके से दूसरे पर लाभ नहीं होता है। – BraedenP

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