2009-08-03 15 views
56

मैं विशेष रूप से कोडइग्निटर और सक्रिय रिकॉर्ड के लिए बहुत नया हूं, मुझे पता है कि सामान्य एसक्यूएल में यह कैसे अच्छा है लेकिन मैं सीखने की कोशिश कर रहा हूं।कोडइग्निटर सक्रिय रिकॉर्ड - लौटाई गई पंक्तियों की संख्या प्राप्त करें

मैं अपनी तालिकाओं में से किसी एक से कुछ डेटा कैसे चुन सकता हूं, और उसके बाद कोडइग्निटर सक्रिय रिकॉर्ड क्लास का उपयोग करके कितनी पंक्तियां लौटा दी जाती हैं?

धन्यवाद, टॉम।

$this->db->from('yourtable'); 
[... more active record code ...] 
$query = $this->db->get(); 
$rowcount = $query->num_rows(); 

उत्तर

107

परिणाम कार्यों here पर एक नज़र डालें !

$query->num_rows(); 
+0

मैं घंटों के लिए मेरे सिर पीटने गया था, मैं समारोह के नाम याद नहीं कर सके ... और यह या तो आधिकारिक दस्तावेज में खोजने के लिए आसान नहीं है। मैंने फ़ंक्शन के नाम का अनुमान लगाने के लिए 'get_where' विधि से उत्पन्न ऑब्जेक्ट पर' print_r' का उपयोग किया! =) – aL3xa

+0

@Residuum क्या आप इसे हल करने में मेरी सहायता कर सकते हैं [क्वेरी-नंब-पंक्ति-न लौटने-सही-संख्या-पंक्ति-जब-परिणाम-खाली नहीं है] (https://stackoverflow.com/ प्रश्न/45397106/क्वेरी-संख्या-पंक्तियां-वापसी-सही-संख्या-पंक्ति-जब-परिणाम-खाली नहीं है) –

35

और,

$table_row_count = $this->db->count_all('table_name'); 
+0

आपको बहुत बहुत धन्यवाद। –

8

बस होगा डॉक्स बेटा पढ़ अगर आप सिर्फ एक तालिका में सभी पंक्तियों की गिनती प्राप्त करना चाहते हैं:

15

आप केवल एक प्रश्न में पंक्तियों की संख्या की जरूरत है और वास्तविक पंक्ति डेटा की जरूरत नहीं है, का उपयोग count_all_results

echo $this->db 
     ->where('active',1) 
     ->count_all_results('table_name'); 
29

यह आपको मॉडल के लिए चला जाता है:

public function count_news_by_category($cat) 
{ 
    return $this->db 
     ->where('category', $cat) 
     ->where('is_enabled', 1) 
     ->count_all_results('news'); 
} 

यह मेरे वर्तमान प्रोजेक्ट से एक उदाहरण है।

$this->db->select('*')->from('news')->where(...); 
$q = $this->db->get(); 
return $q->num_rows(); 
2

आप देख रहे हैं एक पंक्तियों या साथ जहां हालत प्रभावित

function num_rows($table) 
    { 
     return $this->db->affected_rows($table); 
    } 
डेटा के लिए यह भी एक बहुत ही उपयोगी समारोह है:

benchmarking के अनुसार इस क्वेरी से अधिक तेजी से यदि आप निम्न कार्य काम करता है

3

आप दो अलग अलग तरीकों से ऐसा कर सकते हैं:

1. $this->db->query(); //execute the query 
    $query = $this->db->get() // get query result 
    $count = $query->num_rows() //get current query record. 

    2. $this->db->query(); //execute the query 
     $query = $this->db->get() // get query result 
     $count = count($query->results()) 
      or count($query->row_array()) //get current query record. 
2
$this->db->select('count(id) as rows'); 
$this->db->from('table_name'); 
$this->db->where('active',1); 
$query = $this->db->get(); 
foreach($query->result() as $r) 
{ 
    return $r->rows; 
} 
+0

यह 'SELECT' क्वेरी जारी किया जा रहा है जिसमें' COUNT() 'SQL फ़ंक्शन कॉल शामिल है। स्वीकार्य उत्तर इसके बजाय लिया जाना चाहिए क्योंकि यह इसके बजाय '$ query-> num_rows()' को कॉल करके इसे रोकता है। उदाहरण के लिए, mysqli ड्राइवर का 'num_rows()' अंतिम क्वेरी आईडी के लिए 'mysqli_num_rows()' PHP फ़ंक्शन का परिणाम देता है। कृपया ध्यान दें: 'सभी डेटाबेस ड्राइवरों के पास परिणाम सेट के लिए पंक्तियों की कुल संख्या प्राप्त करने का मूल तरीका नहीं है। जब ऐसा होता है, तो सभी डेटा prefetched और गिनती() को परिणामस्वरूप सरणी पर मैन्युअल रूप से बुलाया जाता है ताकि एक ही परिणाम प्राप्त किया जा सके। '(दस्तावेज़ीकरण से)। – Roland

+0

सीआई 3: https://www.codeigniter.com/userguide3/database/results.html#result-helper-methods – Roland

0
function getCount(){ 
    return $this->db->get('table_name')->num_rows(); 
} 
संबंधित मुद्दे