代码点火器计数功能

时间:2011-11-16 10:05:39

标签: php codeigniter

我想要做的是我想从我的数据库中计算名为“songs_tbl”的表中的总记录数。所以我在控制器中写了这个函数。

private function getHeaderInfo()
{
         $total_songs = $songs->count('distinct songs_tbl.song_id');
         $this->mysmarty->assign('total_songs',$total_songs);
}   

我收到了这个错误

  

致命错误:在

中的非对象上调用成员函数count()

有什么建议吗?谢谢。

关心,

4 个答案:

答案 0 :(得分:5)

我认为你在寻找:

$this->db->count_all('songs_tbl');

或者如果你想要那里的distinct,你需要做这样的事情:

$this->db->select('song_id');
$this->db->distinct();
$this->db->from('songs_tbl');
$query = $this->db->get();
return $query->num_rows();

因为有/是吗?使用count_all_results()函数和DISTINCT

的问题

修改

我从来没有使用过smarty,但根据问题中的代码,我想这样的事情可能有用,如果我错了,请纠正我:

private function getHeaderInfo()
{
    $total_songs = get_all_songs();// This function should be called through a model
    $this->mysmarty->assign('total_songs',$total_songs);
}

function get_all_songs(){ //THIS SHOULD BE IN A MODEL
    $this->db->select('song_id');
    $this->db->distinct();
    $this->db->from('songs_tbl');
    $query = $this->db->get();
    return $query->num_rows();
}

编辑2

我建议的布局将是这些行(UNTESTED)使用CodeIgniter而不是聪明的:

模型Song.php

class Song extends CI_Model {
    //Constructor and other functions

    function count_all_songs(){
        $this->db->select('song_id');
        $this->db->distinct();
        $this->db->from('songs_tbl');
        $query = $this->db->get();
        return $query->num_rows();
    }
}

Controller Songs.php

class Song extends CI_Controller {
    //Constructor and other functions

    function index(){ //This could be any page
        $this->load->model('Song'); //Could be in constructor
        $total_songs = $this->Song->count_all_songs();
        $this->load->view('songs_index.html', array('total_songs' => $total_songs));
    }
}

查看songs_index.html

<html><head></head><body>
    Total Songs: <?php echo $total_songs ?>
</body></html>

答案 1 :(得分:1)

您可以查询表并从表本身请求计数,如下所示:

$result = mysql_query(SELECT count(*) FROM songs_tbl);

答案 2 :(得分:1)

试试这个

echo $this->db->count_all('songs_tbl');

它允许您确定特定表中的行数。

答案 3 :(得分:0)

你可以用这个

$query = $this->db->get('distinct');
        if($query->num_rows())
        {
            return $query->num_rows();
        }else{
            return 0;
        }