2010-11-02 12 views
8

Drupal में SQL जैसी क्वेरी लिखने के लिए कैसे में क्वेरी की तरह उपयोग करने के लिए,कैसे Drupal

SELECT title FROM { node } WHERE type='%s' 

मुझे लगता है कि

SELECT title FROM { node } WHERE type='%s' AND LIKE '%S%' 

की तरह हालत जोड़ना चाहते हैं मुझे लगता है कि मैं क्वेरी formnat तरह गलत writtern , मुझे फिर से लिख सकता है और बता सकता है,

उत्तर

12

बस से बचने के लिए% का उपयोग करें।

$result = db_query('SELECT title FROM {node} WHERE type = "%s" AND title LIKE "%%%s%%"', 'type', 'title'); 

while ($row = db_fetch_object($result)) { 
    // do stuff with the data 
} 

नोड प्रकार से बचने की आवश्यकता नहीं है।

$query = db_select('node', 'n') 
     ->fields('n', array('title')) 
     ->condition('type', 'my_type') 
     ->condition('title', '%' . db_like(search_string) . '%', 'LIKE'); 
    $result = $query->execute()->fetchCol(); 

db_like() अक्षर हैं जो एक तरह पैटर्न में के रूप में वाइल्डकार्ड वर्णों काम निकल जाता है करने के लिए प्रयोग किया जाता है:

3

ठीक है, तो आप title कॉलम को संदर्भित करने के लिए LIKE ऑपरेटर चाहते हैं। इस क्वेरी का उपयोग करें:

$sql = "SELECT title FROM node WHERE type='%s' AND title LIKE '%S%'"; 
$type = "type to use in query"; 
$title = "title to use in query";  
$result = db_result(db_query($sql, $type, $title)); 

इसका कारण यह है LIKE ऑपरेटर निर्दिष्ट किया जा करने के लिए एक स्तंभ नाम की आवश्यकता है। अन्यथा, आपके डेटाबेस में कोई विचार नहीं है कि आप किस मूल्य पर तुलना करना चाहते हैं। here देखें।

+0

मैं शीर्षक क्षेत्र – Bharanikumar

+0

के लिए ऑपरेटर की तरह चाहता हूं, ड्रूपल – Bharanikumar

+0

के लिए पूछ रहा हूं यह सही है, लेकिन आपको उन प्लेसहोल्डर्स के लिए विकल्प जोड़ने के लिए चर जोड़ना होगा। तो, $ sql = db_query ("नोड से चुनें शीर्षक जहां प्रकार = '% s' और शीर्षक '% S%' शीर्षक, $ प्रकार, $ शीर्षक); $ परिणाम = db_result ($ sql); जहां $ प्रकार और $ शीर्षक उन चीज़ों के बराबर हैं जिन्हें आप फ़िल्टर कर रहे हैं। आप इसे जानते हो सकता है; मैं बस स्पष्ट बताना चाहता था। – theunraveler

4

drupal_query मूल्य स्ट्रिंग

को% और% s की जगह %% तो अपने कोड होगा

$sql = "SELECT title FROM node WHERE type='%%%s' AND title LIKE '%%%S%%'"; 
$type = "type to use in query"; 
$title = "title to use in query";  
$result = db_result(db_query($sql, $type, $title)); 
3

और यहाँ कैसे एक गतिशील क्वेरी (ड्रुपल 7 केवल) में की तरह उपयोग करने के लिए के साथ एक उदाहरण है।

+0

यह गलत है, सवाल ड्रूपल 6 के बारे में पूछा गया था। आपने एक ड्रूपल 7 उत्तर – generalconsensus

+0

अच्छा बिंदु प्रदान किया - मैंने यह जवाब स्पष्ट कर दिया कि यह केवल ड्रूपल 7 पर काम करता है। अभी भी किसी के लिए उपयोगी साबित हो सकता है ... –

+0

बहुत धन्यवाद! – generalconsensus

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