2011-12-30 11 views
8

मैं पंक्तियों को लाने की कोशिश कर रहा हूं जो कि पूर्णांक की सरणी में हैं जो मैंने ज़ेंड फ्रेमवर्क 1.11 का उपयोग किया है।ज़ेंड डीबी का उपयोग करके खंड में MySQL कैसे करें?

$this->dbSelect 
     ->from($table_prefix . 'product_link') 
     ->joinLeft($table_prefix . 'product_link_name', $table_prefix . 'product_link.product_link_name_ref_id = ' . $table_prefix . 'product_link_name.product_link_name_id') 
     ->where('product_ref_id IN (?)', implode(', ', $product_ids)); 

जब मैं $this->dbSelect की __toString() विधि का उपयोग करें, मैं

SELECT `phc_distrib_product_link`.*, 
    `phc_distrib_product_link_name`.* 
FROM `phc_distrib_product_link` 
LEFT JOIN `phc_distrib_product_link_name` 
ON phc_distrib_product_link.product_link_name_ref_id = phc_distrib_product_link_name.product_link_name_id 
WHERE (product_ref_id IN ('10, 12')) 

यह केवल पंक्तियों रिटर्न स्थिति है, जिसमें product_ref_id = 10 मैं कैसे प्राप्त कर सकते हैं होने के लिए खंड संतोषजनक मिल

product_ref_id IN ('10', '12') 

या

product_ref_id IN (10, 12) 

ज़ेंड डीबी तैयार कथन का उपयोग करके मैं उत्पाद आईडी सरणी के अंदर मौजूद सभी पंक्तियां ला सकता हूं?

उत्तर

15

सरणी फटना मत करो, बस इसे पारित:

->where('product_ref_id IN (?)', $product_ids); 
+0

तो सही, धन्यवाद! आपने इतनी तेजी से उत्तर दिया कि मैं अभी तक जवाब स्वीकार नहीं कर सकता, लेकिन जब मुझे अनुमति होगी तो मैं करूँगा! – danronmoon

1

यह उल्लेख किया गया है लायक है कि वहाँ का उपयोग करने के 2 तरीके कहां में Zend_Db_Select में clausule:

  1. हम सरणी पारित कर सकते हैं दूसरा पैरामीटर के रूप में:

    $select->where("column_value IN (?)", $array_of_values)

  2. या हम सिम कर सकते हैं प्लाई सरणी फटना स्ट्रिंग के रूप में मूल्यों को प्राप्त करने के लिए:

    $select->where("column_value IN (" . implode(',', $array_of_values) . ")")

+0

दूसरी विधि सुरक्षित नहीं है अगर 'array_of_values' पूर्णांक की सरणी नहीं है! बस इसे हटाने के लिए कल्पना करें() '$ array_of_values' में: सरणी ("column_value") है। इसके परिणामस्वरूप: 'table_name से हटाएं कॉलम_वैल्यू (कॉलम_वल्यू)' जो सबकुछ हटा देगा! –

-1
->where('country_id IN (?)', $country_ids);