2011-08-12 6 views
29

एक परिदृश्य में मुझे रिकॉर्ड्स की गिनती जानने की आवश्यकता है, एक क्वेरी वापस आ जाएगी, जो कोडनिर्देशक में हो सकता है $query->num_rows() या $this->db->count_all_results() द्वारा किया गया। कौन सा बेहतर है और इन दोनों के बीच क्या अंतर है?

उत्तर

38

num_rows() के साथ आप पहले क्वेरी करते हैं, और फिर आप जांच सकते हैं कि आपको कितनी पंक्तियां मिलीं। दूसरी ओर count_all_results() केवल आपको आपकी पंक्तियों की पंक्तियों की संख्या देता है, लेकिन आपको वास्तविक परिणाम नहीं देता है।

// num rows example 
$this->db->select('*'); 
$this->db->where('whatever'); 
$query = $this->db->get('table'); 
$num = $query->num_rows(); 
// here you can do something with $query 

// count all example 
$this->db->where('whatever'); 
$num = $this->db->count_all_results('table'); 
// here you only have $num, no $query 
+1

ठीक है, मुझे लगता है मैं 'count_all_results' का उपयोग करेगा, मैं, पृष्ठांकन में गिनती की जरूरत है धन्यवाद एक टन :) – Kumar

+0

' count_all_results' कहीं बेहतर है आप को देखने के अनुकूलन बिंदु से देख रहे हैं। –

5

$this->db->count_all_results एक Active Record क्वेरी का हिस्सा (क्वेरी की तैयारी कर रहा है, केवल संख्या, न कि वास्तविक परिणाम देने के) है।

$query->num_rows()resultset object (डीबी से परिणाम लौटने के बाद) पर किया जाता है।

+0

तो मेरे लिए यह बेहतर लगता है कि 'अगर ($ this-> डीबी-> count_all_results()> 0 {// do stuff} '? – Kumar

+0

यदि आप सभी की परवाह है तो परिणाम की संख्या है, तो हाँ –

2

Which one is better and what is the difference between these two यह मेरे लिए लगभग असंभव है, कोई भी फिर से स्पर्श किए बिना रिकॉर्ड की संख्या प्राप्त करना चाहता है या एक ही क्वेरी को शामिल करने वाली दूसरी क्वेरी निष्पादित करना चाहता है। इसके अलावा, इन दो फ़ंक्शन द्वारा उपयोग की जाने वाली मेमोरी उसी तरह से है, क्योंकि count_all_result के साथ आप अभी भी get (सीआई एआर शर्तों में) कर रहे हैं, इसलिए मैं आपको दूसरे का उपयोग करने की सिफारिश करता हूं (या इसके बजाय गणना() का उपयोग करता हूं) जिसने आपको पुन: प्रयोज्यता दी लाभ।

2

क्वेरी वापस आने वाले रिकॉर्ड्स की कुल संख्या को गिनने के दो तरीके हैं। सबसे पहले इस

$query = $this->db->query('select blah blah'); 
return $query->num_rows(); 

यह पंक्तियाँ क्वेरी लाया की संख्या वापस आ जाएगी।

दूसरा

return $this->db->count_all_results('select blah blah'); 

सीधे शब्दों में count_all_results क्वेरी फिर से चलाने की आवश्यकता होगी।

+0

पहला मेरे मामले में काम नहीं कर रहा है .. –

1

हम भी उपयोग कर सकते हैं

return count_all('table_name'); 

या

$this->db->from('table_name'); 
return $this->db->count_all_result(); 

या

$query = $this->db->query('select * from tab'); 
return $query->num_rows(); 
0

परिणाम की कुल संख्या

$this->db->count_all_results('table name'); 
0

बस बोले के रूप में;

$this->db->get('table_name')->num_rows(); 

इससे पंक्तियों/अभिलेखों की संख्या मिल जाएगी। हालांकि आप खोज पैरामीटर का भी उपयोग कर सकते हैं;

$this->db->select('col1','col2')->where('col'=>'crieterion')->get('table_name')->num_rows(); 

हालांकि, यह ध्यान दिया जाना चाहिए कि यदि आप नीचे आवेदन कर रहे हैं तो आपको खराब बुरी त्रुटियां दिखाई देगी;

$this->db->get('table_name')->result()->num_rows(); 
संबंधित मुद्दे