我想要做的是我想从我的数据库中计算名为“songs_tbl”的表中的总记录数。所以我在控制器中写了这个函数。
private function getHeaderInfo()
{
$total_songs = $songs->count('distinct songs_tbl.song_id');
$this->mysmarty->assign('total_songs',$total_songs);
}
我收到了这个错误
致命错误:在
中的非对象上调用成员函数count()
有什么建议吗?谢谢。
关心,
答案 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;
}