Codeigniter 消息:对非对象调用成员函数result_array()

Codeigniter 消息:对非对象调用成员函数result_array(),codeigniter,Codeigniter,我是Codeigniter的新手,我仍然在关注DB交互。我不知道为什么这会给我一个错误,我认为这是查询的原因,但是我可以直接对数据库运行它,而不会出现错误。有什么想法吗 public function getLastSafetyTraining() { $query = "SELECT entry_date as date, field_id_108 as instructor FROM exp_channel_titles t, exp_channel_data d

我是Codeigniter的新手,我仍然在关注DB交互。我不知道为什么这会给我一个错误,我认为这是查询的原因,但是我可以直接对数据库运行它,而不会出现错误。有什么想法吗

public function getLastSafetyTraining()
    {

        $query = "SELECT entry_date as date, field_id_108 as instructor FROM exp_channel_titles t, exp_channel_data d WHERE t.channel_id = 27 AND t.entry_id = d.entry_id";

        $result = $this->db->query($query);

        foreach ($result->result_array() as $row)
        {
            echo $row['date'];
            echo $row['instructor'];
        }

    }
正在添加成功的数据库调用:

public function getListOfInstructors()
    {
        $query = $this->db->select('member_id, email, group_id')
                            ->where('group_id >', 7)
                            ->limit(10, 20)
                            ->get('exp_members');

        return $query->result_array();
    }

该错误可能是由于查询(以及结果()对象)为空。在尝试使用result()对象之前,请确保查询实际返回至少一条记录:

实际上,回音部分必须在视图中完成,只有将结果返回给控制器 在控制器中加载上述模型并调用模型函数

$var = $this->model->function();
操纵结果,然后将数据传递到视图并在其中进行回送

更清楚地说,不要从模型中回显模型[where all query part is done]中的任何内容,只返回查询结果,以确保我们使用if条件并将结果返回给控制器

该模型必须加载到控制器中,并从模型中获取这些返回值,所以我们使用 $this->load->model('nameof model')

然后获取这些值并将其保存在变量中作为

$var = $this->model->function(); //now pass this to view after manipulating it as and echo in view
在你的模型中,你必须这样做

public function getLastSafetyTraining()
    {

        $query = "SELECT entry_date as date, field_id_108 as instructor FROM exp_channel_titles t, exp_channel_data d WHERE t.channel_id = 27 AND t.entry_id = d.entry_id";

        $result = $this->db->query($query);
       $count = count($result);

    if(empty($count) || $count > 1)
    {
        $log = 0;
        return $log ;
    }
    else
    {
        return $result;
    }



    }
你的控制器

public function getListOfInstructors()
    {
       $this->load->model('Name of your model');
            $result = $this->Name_of_model->Name_of_function_of_model();
            if($result==0) {
                echo "Nothing found";
                }
                else {
                    $data['var']=$result;
                    $this->load->view('header');
                    $this->load->view("your view", $data);
                }



    }

该错误可能是由于查询(以及结果()对象)为空。在尝试使用result()对象之前,请确保查询实际返回至少一条记录:

实际上,回音部分必须在视图中完成,只有将结果返回给控制器 在控制器中加载上述模型并调用模型函数

$var = $this->model->function();
操纵结果,然后将数据传递到视图并在其中进行回送

更清楚地说,不要从模型中回显模型[where all query part is done]中的任何内容,只返回查询结果,以确保我们使用if条件并将结果返回给控制器

该模型必须加载到控制器中,并从模型中获取这些返回值,所以我们使用 $this->load->model('nameof model')

然后获取这些值并将其保存在变量中作为

$var = $this->model->function(); //now pass this to view after manipulating it as and echo in view
在你的模型中,你必须这样做

public function getLastSafetyTraining()
    {

        $query = "SELECT entry_date as date, field_id_108 as instructor FROM exp_channel_titles t, exp_channel_data d WHERE t.channel_id = 27 AND t.entry_id = d.entry_id";

        $result = $this->db->query($query);
       $count = count($result);

    if(empty($count) || $count > 1)
    {
        $log = 0;
        return $log ;
    }
    else
    {
        return $result;
    }



    }
你的控制器

public function getListOfInstructors()
    {
       $this->load->model('Name of your model');
            $result = $this->Name_of_model->Name_of_function_of_model();
            if($result==0) {
                echo "Nothing found";
                }
                else {
                    $data['var']=$result;
                    $this->load->view('header');
                    $this->load->view("your view", $data);
                }



    }

您可以按以下方式修改代码:

public function getLastSafetyTraining()
    {

        $query = "SELECT entry_date as date, field_id_108 as instructor FROM exp_channel_titles t, exp_channel_data d WHERE t.channel_id = 27 AND t.entry_id = d.entry_id";

        $result = $this->db->query($query);

        print_r($result); die; // this is added line for debug


        foreach ($result->result_array() as $row)
        {
            echo $row['date'];
            echo $row['instructor'];
        }

    }

您可以通过这样做进行调试,如果您不能在这里编写输出打印的内容,我将给出您的代码的确切问题

您可以按如下方式修改代码:

public function getLastSafetyTraining()
    {

        $query = "SELECT entry_date as date, field_id_108 as instructor FROM exp_channel_titles t, exp_channel_data d WHERE t.channel_id = 27 AND t.entry_id = d.entry_id";

        $result = $this->db->query($query);

        print_r($result); die; // this is added line for debug


        foreach ($result->result_array() as $row)
        {
            echo $row['date'];
            echo $row['instructor'];
        }

    }

您可以通过这样做进行调试,如果您不能在这里编写输出打印的内容,我将给出您的代码的确切问题

你们说得对,我得到的结果集是空的。但是,我可以通过PHPMyAdmin运行该查询并获得结果,那么CI中的查询有什么问题?@user1684180奇怪,您是否正确加载了数据库配置并尝试将查询打印为print\r($query);是的,因为我的控制器在此之前调用了一个模型函数,该函数从数据库返回值。我将更新原始帖子以包含此内容。@user1684180您使用了错误的方式,我将更新我的答案如何do@user1684180当这个函数getListOfInstructors()在model或Controllery中时,你们是对的,我得到的结果集是空的。但是,我可以通过PHPMyAdmin运行该查询并获得结果,那么CI中的查询有什么问题?@user1684180奇怪,您是否正确加载了数据库配置并尝试将查询打印为print\r($query);是的,因为我的控制器在此之前调用了一个模型函数,该函数从数据库返回值。我将更新原始帖子以包含此内容。@user1684180您使用了错误的方式,我将更新我的答案如何do@user1684180其中,函数getListOfInstructors()位于模型或控制器中