logo

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

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

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

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

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

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

GLightbox is a pure javascript lightbox (Colorbox alternative without jQuery)❗

It can display images, iframes, inline content and videos with optional autoplay for YouTube, Vimeo and even self-hosted videos.

Demo GLightbox Download GLightbox

स्क्रॉल

Drupal 7 में डेटाबेस के साथ काम — पाठ 9 — रिकॉर्ड अपडेट क्वेरीज़ (UPDATE)

14/10/2025, by Ivan

रिकॉर्ड अपडेट (UPDATE) क्वेरीज़ को हमेशा Drupal के क्वेरी बिल्डर (Query Builder) के माध्यम से बनाना चाहिए। विभिन्न डेटाबेस सिस्टम्स में बड़े ऑब्जेक्ट्स (LOB — Large OBjects, जैसे MySQL में TEXT) और बाइनरी बड़े ऑब्जेक्ट्स (BLOB — Binary Large OBjects) के लिए अलग-अलग हैंडलर होते हैं। इसलिए, इन मामलों को संभालने के लिए क्वेरी एब्स्ट्रैक्शन लेयर आवश्यक होती है, जिससे हर डेटाबेस ड्राइवर अपनी विशिष्ट प्रक्रिया लागू कर सके।

अपडेट क्वेरी db_update() फ़ंक्शन से शुरू होती है:

<?php
$query = db_update('node', $options);
?>

यह कोड “node” टेबल में एक या अधिक रिकॉर्ड्स को अपडेट करेगा। ध्यान दें कि टेबल के नाम के चारों ओर आकृति कोष्ठक ({}) लगाने की आवश्यकता नहीं है — क्वेरी बिल्डर यह स्वतः करता है।

अपडेट क्वेरी ऑब्जेक्ट Fluent API शैली का उपयोग करता है। इसका अर्थ है कि execute() को छोड़कर सभी मेथड्स वही ऑब्जेक्ट वापस लौटाते हैं, जिससे मेथड्स को आपस में जोड़ा जा सकता है (method chaining)। अधिकतर मामलों में इसका अर्थ यह है कि क्वेरी को किसी वेरिएबल में स्टोर करने की आवश्यकता नहीं होती।

अपडेट क्वेरी सामान्यतः कुंजी-मूल्य (key/value) जोड़ों और WHERE शर्तों के सेट से मिलकर बनती है। WHERE क्लॉज़ की संरचना हम अगले पाठ में विस्तार से देखेंगे, यहाँ केवल एक उदाहरण के रूप में इसे शामिल किया गया है।

एक विशिष्ट अपडेट क्वेरी इस प्रकार होगी:

<?php
/* यह उदाहरण दिखाता है कि “node” टेबल में रिकॉर्ड्स को कैसे अपडेट किया जाए */
$num_updated = db_update('node')
  ->fields(array(
    'uid' => 5,
    'status' => 1,
  ))
  ->condition('created', REQUEST_TIME - 3600, '>=')
  ->execute();
?>

ऊपर दिया गया उदाहरण निम्नलिखित SQL क्वेरी के समान है:

UPDATE {node} SET uid=5, status=1 WHERE created >= 1221717405;

यह क्वेरी उन सभी रिकॉर्ड्स को अपडेट करेगी जो पिछले एक घंटे में बनाए गए हैं — इन रिकॉर्ड्स के लिए uid = 5 और status = 1 सेट किया जाएगा।

fields() मेथड एक एसोसिएटिव ऐरे स्वीकार करता है, जिसमें यह बताया जाता है कि किन फ़ील्ड्स को अपडेट करना है और उनके लिए नए मान क्या होंगे। ध्यान दें कि INSERT क्वेरीज़ के विपरीत, UpdateQuery::fields() केवल एसोसिएटिव ऐरे को ही स्वीकार करता है। साथ ही, ऐरे के तत्वों का क्रम महत्वपूर्ण नहीं है — चाहे आप उन्हें किसी भी क्रम में लिखें।

execute() मेथड उन रिकॉर्ड्स की संख्या लौटाता है जो वास्तव में अपडेट किए गए हैं। हालाँकि, यह ध्यान देना महत्वपूर्ण है कि यह संख्या उन सभी रिकॉर्ड्स के बराबर नहीं होती जो WHERE शर्त से मेल खाते हैं। उदाहरण के लिए, यदि कुछ रिकॉर्ड्स पहले से ही uid = 5 और status = 1 रखते हैं, तो वे WHERE शर्त से मेल खाएँगे, लेकिन वास्तव में अपडेट नहीं होंगे क्योंकि उनके मान पहले से ही समान हैं।

इसलिए, अपडेट क्वेरी द्वारा लौटाई गई संख्या यह नहीं दर्शाती कि टेबल में कितनी पंक्तियाँ uid = 5 और status = 1 के साथ मौजूद हैं — यह केवल बताती है कि वास्तव में कितनी पंक्तियाँ बदली गई हैं।