2010-02-17 8 views
14

मैं इस क्वेरी के बराबर का उपयोग कर एक डेटाबेस से रिकॉर्ड का चयन कर रहा हूँ:Zend डीबी fetchAll(): जहां में ऑपरेटर के साथ खंड सरणी

SELECT * FROM reports WHERE user_id IN (3, 6, 22); 

समारोह fetchAll() कॉल एक तर्क की एक सरणी है कि है प्रयोक्ता आईडी, और इस कॉल काम करता है ठीक:

$resultSet = $this->getDbTable()->fetchAll('user_id IN (' . implode(', ', $userIds) . ')'); 

हालांकि, मैं जहां खंड के लिए एक सरणी का उपयोग करने क्योंकि वहाँ शायद क्वेरी बाद में करने के लिए अन्य प्रतिबंध लागू हो जाएंगे चाहते हैं ... और मैं नहीं कर सकता मेरे जीवन के लिए इसे समझो। मैंने सोचा कि यह निम्नलिखित पर कुछ भिन्नता होगी:

$resultSet = $this->getDbTable()->fetchAll(array('user_id IN ?' => '(' . implode(', ', $userIds) . ')')); 

लेकिन अभी तक कोई पासा नहीं है। क्या कोई यहां सही वाक्यविन्यास प्रदान कर सकता है?

उत्तर

21
$data = array(1, 2, 3); 
$select->where('user_id IN (?)', $data); 
+0

खैर, यह fetchAll के लिए है() के बजाय जहां (के), लेकिन यह टिकट है। मैंने पहले 'user_id IN (?)' की कोशिश की थी लेकिन इसे इंपोड() से नतीजे से सीधे जोड़ दिया था, न केवल सीधे सरणी। – Cyranix

2

Zend 2

में
$data = array(1, 2, 3); 
$select->where('user_id', $data); 
0
$select = $this->getSql()->select(); 
$select->where("reports.user_id in ('3','6','22')"); 
$resultSet = $this->selectWith($select);    
//echo $select->getSqlString();die; 
return $resultSet; 
+0

हालांकि यह कोड समस्या को हल करने में मदद कर सकता है, _why_ और/या _how_ के संबंध में अतिरिक्त संदर्भ का उत्तर देता है, यह प्रश्न इसके दीर्घकालिक मूल्य में काफी सुधार करेगा। स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें, जिसमें सीमाएं और मान्यताओं को लागू किया गया है। –

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