logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल

Drupal 7 में डेटाबेस के साथ काम — पाठ 1 — Drupal DB API

14/10/2025, by Ivan

यदि आपने Drupal 6 के लिए मॉड्यूल लिखे हैं, तो आपके लिए नए Drupal 7 Database API पर स्विच करना कठिन नहीं होगा। नया DB API PHP के PDO एक्सटेंशन पर आधारित है, जिससे यह विभिन्न डेटाबेस जैसे MySQL, PostgreSQL, MSSQL और यहां तक कि Oracle के साथ भी काम कर सकता है। यद्यपि इसका सिंटैक्स थोड़ा नया है और इसकी आदत डालने में समय लगता है, फिर भी यह काफी शक्तिशाली है।

यहाँ Drupal की आधिकारिक डॉक्यूमेंटेशन से कुछ अंश दिए गए हैं:

Drupal 7 Database API एक मानक, सहज और सुरक्षित स्तर प्रदान करता है जो डेटाबेस सर्वर तक पहुँचने के लिए उपयोग किया जाता है। यह API इस तरह से डिज़ाइन किया गया है कि SQL की शक्ति और सिंटैक्स यथासंभव बरकरार रहें, साथ ही:

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

Drupal Database API की मुख्य अवधारणा

Drupal का डेटाबेस एब्स्ट्रैक्शन लेयर (db layer) PHP की PDO (PHP Data Objects) लाइब्रेरी पर आधारित है। PDO विभिन्न डेटाबेस सर्वरों के साथ काम करने के लिए एकीकृत और ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान करता है, लेकिन यह अलग-अलग SQL डायलेक्ट्स के लिए पूर्ण एब्स्ट्रैक्शन लेयर प्रदान नहीं करता।

ड्राइवर्स

क्योंकि विभिन्न डेटाबेस अलग-अलग इंटरैक्शन की मांग करते हैं, Drupal प्रत्येक डेटाबेस प्रकार के लिए अलग ड्राइवर की आवश्यकता होती है। ये ड्राइवर includes/database/driver डायरेक्टरी में रखे जाते हैं, जहाँ “driver” उस डेटाबेस का यूनिक आइडेंटिफ़ायर होता है — जैसे mysql, pgsql या कोई कस्टम ड्राइवर।

प्रत्येक ड्राइवर कई क्लासों से बना होता है जो कोर की पैरेंट क्लासेस से इनहेरिट करती हैं। ड्राइवर क्लासेज़ डेटाबेस-विशिष्ट व्यवहारों को ओवरराइड कर सकती हैं। उदाहरण के लिए, MySQL के लिए InsertQuery क्लास का नाम होगा InsertQuery_mysql

डेटाबेस से कनेक्शन

प्रत्येक डेटाबेस कनेक्शन DatabaseConnection क्लास का एक ऑब्जेक्ट होता है, जो PDO से इनहेरिट करता है। Drupal में प्रत्येक सक्रिय डेटाबेस के लिए केवल एक ही कनेक्शन ऑब्जेक्ट मौजूद होता है।

कनेक्शन ऑब्जेक्ट प्राप्त करने के लिए:

<?php
$conn = Database::getConnection($target, $key);
?>

या सक्रिय (डिफ़ॉल्ट) कनेक्शन प्राप्त करने के लिए:

<?php
$conn = Database::getConnection();
?>

अधिकतर मामलों में, आपको सीधे कनेक्शन ऑब्जेक्ट तक पहुँचने की आवश्यकता नहीं होती, क्योंकि अधिकांश प्रोसीजरल फंक्शन यह कार्य आपके लिए स्वतः करते हैं। यह केवल तब आवश्यक होता है जब आप एक साथ कई डेटाबेस पर जटिल क्वेरी चलाना चाहते हैं।

सक्रिय कनेक्शन सेट करने के लिए उपयोग करें:

<?php
db_set_active($key);
?>

डेटाबेस क्वेरीज़

एक क्वेरी वह SQL कथन है जिसे डेटाबेस सर्वर पर भेजा जाता है। Drupal DB API छह प्रकार की क्वेरीज़ को सपोर्ट करता है:

  • Static (स्थिर)
  • Dynamic (गतिशील)
  • Insert (डाटा जोड़ना)
  • Update (डाटा अपडेट करना)
  • Delete (डाटा हटाना)
  • Merge (डाटा मिलाना)

कई क्वेरीज़ सीधे SQL स्ट्रिंग के रूप में लिखी जा सकती हैं, जबकि अन्य ऑब्जेक्ट-ओरिएंटेड क्वेरी बिल्डर के माध्यम से बनाई जाती हैं। हर क्वेरी एक ऑब्जेक्ट होती है जो संबंधित क्वेरी प्रकार को दर्शाती है।

क्वेरी लिखना

किसी क्वेरी का परिणाम आमतौर पर DatabaseStatement क्लास (या इसके सबक्लास) के रूप में लौटाया जाता है। यह क्लास PDOStatement का विस्तार करती है।

Drupal में सभी क्वेरीज़ "prepared statements" के रूप में कार्य करती हैं — यानी SQL टेम्पलेट्स जिनमें बाद में मान डाले जाते हैं। इससे सुरक्षा बढ़ती है और SQL इंजेक्शन से बचाव होता है।

PDO में, एक prepared statement को पहले परिभाषित किया जाता है और फिर execute करते समय आवश्यक पैरामीटर उसमें जोड़े जाते हैं। इसे कई बार पुनः उपयोग किया जा सकता है।

Drupal इन statements को प्रत्यक्ष रूप से उजागर नहीं करता। इसके बजाय, डेवलपर को एक उच्च-स्तरीय ऑब्जेक्ट-ओरिएंटेड क्वेरी सिस्टम प्रदान किया गया है, जिसमें SQL के बिना भी सुरक्षित और पोर्टेबल क्वेरीज़ बनाई जा सकती हैं।