【问题标题】:Fatal error: $this->db->where()->join()->num_rows()致命错误:$this->db->where()->join()->num_rows()
【发布时间】:2016-02-12 11:10:26
【问题描述】:

我想用 where db 查询进行 codeigniter 分页。

我的模型: (更新)

public function get_all_produk_row($url = ''){
  data = array();
  $this->db->where(array('kategori.url'=>$url,'produk.status_produk'=>'1'));
  $this->db->order_by('kategori_id');
  $this->db->join('kategori','kategori.id_kategori=produk.kategori_id');
  $this->db->num_rows();
  return $data;
}

但我遇到了致命错误:Call to undefined method CI_DB_mysql_driver::num_rows()

我该如何解决?


我的数据库

分类:

id_kategori
kode_kategori
url

产品:

id_produk
kategori_id
kode_produk
status_produk

【问题讨论】:

  • 制作:SELECT * FROM (produk) JOIN kategori ON kategori.id_kategori=produk.kategori_id WHERE kategori.url = '$url' AND produk.status_produk = '1' ORDER BY kategori_id。我必须把num_rows() 代码放在哪里?
  • 执行查询函数后需要使用numrows

标签: php codeigniter pagination where mysql-num-rows


【解决方案1】:

调用get()函数后你可以得到行数:

public function get_all_produk_row($url = '')
{ 
    $data = array(); 
    $this->db->where(array('kategori.url'=>$url,'produk.status_produk'=>'1')); 
    $this->db->join('kategori','kategori.id_kategori=produk.kategori_id'); 
    $this->db->order_by('kategori_id'); 
    $query = $this->db->get();

    if ($query->num_rows() > 0)
    {
         $data = $query->result_array();
    }
    return $data;
}

【讨论】:

    【解决方案2】:

    您的查询应如下所示:-

    $this->db->select('*');
    $this->db->from('table');
    $this->db->where($your_conditions);
    $num_results = $this->db->count_all_results();
    

    $this->db->select('*');
    $this->db->where('whatever');
    $query = $this->db->get('table');
    $num = $query->num_rows();
    

    【讨论】:

    • 我得到错误号:1064。SELECT COUNT(*) AS numrows WHERE kategori.url = 'baterai' AND produk.status_produk = '1 '
    • 您的查询应该是:- SELECT COUNT(*) AS numrows FROM TableName WHERE kategori.url = 'baterai' AND produk.status_produk = '1' 。您错过了 TableName
    • 我使用数组 where codeigniter.我得到了那个产品
    • 检查我的第二部分答案。
    • 谢谢老兄,但是当我这里有 2 张桌子时,我应该填写“桌子”吗?
    【解决方案3】:

    这里缺少表名

    public function get_all_produk_row($url = '')
    {     
      $data = $this->db->get_where("kategori",array('kategori.url'=>$url,'produk.status_produk'=>'1'))->num_rows(); 
     //or one method can be if you can write query 
     //$data = $this->db->query("select count(*) as total tbl_name")->row()->total; 
      return $data;
    }
    

    【讨论】:

    • 表名是:kategoriproduk。我想计算我从这个 where 查询中获得了多少行
    • 这两个表是如何相互连接的?
    • 我的意思是有没有通用的列名?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    相关资源
    最近更新 更多