我在Codeigniter中收到不受支持的操作数类型错误

时间:2019-02-18 13:52:21

标签: php codeigniter

当我尝试添加分页链接时,出现不受支持的操作数类型错误

这是我的代码

型号

public function getCategory($limit,$offset){

    $this->db->select("*");
    $this->db->from("tbl_category");
    $this->db->limit($limit,$offset);

    $row = $this->db->get()->result_array();

    return $row;
}

public function num_rows(){
    $this->db->select('*');
    $this->db->from('tbl_category');
    $row = $this->db->get()->result_array();
    return $row;
}

控制器

public function category($script="list",$id=""){
    $data['script'] = $script;

    if($script == 'list'){

        $config = [
            'base_url' => base_url('http://localhost/training/admin/'),
            'per_page' => 2,
            'total_rows' => $this->admin_model->num_rows(),
        ];
        $this->pagination->initialize($config);
        $rows = $this->admin_model->getCategory($config['per_page'], $this->uri->segment(3));
        $data['rows'] = $rows;
    }

在查看文件中,我这样做是为了获取链接

<?php $this->pagination->create_links(); ?>

我得到的错误如下所示

遇到未捕获的异常 类型:错误

消息:不支持的操作数类型

文件名:C:\ xampp \ htdocs \ training \ system \ libraries \ Pagination.php

行号:412

回溯:

文件:C:\ xampp \ htdocs \ training \ application \ views \ category.php 线:101 功能:create_links

文件:C:\ xampp \ htdocs \ training \ application \ controllers \ Admin.php 线:150 功能:查看

文件:C:\ xampp \ htdocs \ training \ index.php 线:315 功能:require_once

2 个答案:

答案 0 :(得分:0)

在Controller函数中,当您获得结果时,必须按如下所示将其传递到View文件中。

<Host name="nn"  appBase="C:\eWebsitesWS\nmj"
        unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="jweb">

然后在您的视图文件中,您可以获得分页链接。

$data['rows'] = $rows;

// load the view
$this->load->view('category_view', $data);

编辑=> 在这里,您在配置数组<?php echo $this->pagination->create_links(); ?> 中分配一个数组而不是计数。

您的模型功能是

'total_rows' => $this->admin_model->num_rows(),

在上述函数中,您将返回public function num_rows(){ $this->db->select('*'); $this->db->from('tbl_category'); $row = $this->db->get()->result_array(); return $row; //This $row is an Array, NOT count no. of rows } ,它是一个数组。而这就是您遇到诸如不支持的操作数类型错误之类的错误的原因

因此有2种解决方案。 仅尝试任何一种解决方案。

1),您必须将结果集的计数返回到total_rows变量:

return $row;

或 2)。您可以更改功能。

$config = [
            'base_url' => base_url('http://localhost/training/admin/'),
            'per_page' => 2,
            'total_rows' => count($this->admin_model->num_rows()), //Pass the count of returned array.
        ];

注意:- 如果只想计算行数,则可以使用 $ this-> db-> count_all_results()作为在下面。

public function num_rows(){
    $this->db->select('*');
    $this->db->from('tbl_category');
    $row = $this->db->get()->result_array();
    return $row->num_rows(); //Return count result instead of array.
}

num_rows():-使用 num_rows()首先执行查询,然后可以检查获得了多少行。 在需要表数据时很有用

count_all_results():-使用 count_all_results(),您可以获得查询将产生的行数,但没有提供实际的结果集。 在仅需要行计数(例如分页)时很有用,显示否。记录等。

在这里参考我的另一个答案。 Codigniter Query Returning wrong count

答案 1 :(得分:-1)

Here is my code

 $mess_fees = $this->db->query("SELECT sum(t2.amount) as mess_fees FROM `mess_fee_head` as t1 JOIN mess_fee_detail as t2 ON t1.id=t2.mess_fee_head_id WHERE t1.batch=$student_batch_id AND t1.academic_year_id=$newstudent_acedemic_year_id AND t2.status='Y'")->result();
 $num=4;
 $mess_fee_amount=($mess_fees)/$num;