CodeIgniter:函数调用result_array()给出错误

时间:2014-04-16 05:18:37

标签: php codeigniter

我收到这个错误就像一个小时,这是codeigniter上的错误

这是我的模特:

我也描述了字段的属性

class news_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();  
        $this->load->database();
    }

    public function get_news($id = false)
    {
        if ($id === false) {
            $query = $this->db->query("SELECT tbl_news.id,
                                            tbl_news.fa_name,
                                            tbl_news.en_name,
                                            tbl_news.fa_shrt_name,
                                            tbl_news.en_shrt_name,
                                            tbl_news.fa_text,
                                            tbl_news.en_text,
                                            tbl_news.image,
                                            tbl_news.grp_id,
                                            tbl_news_grp.fa_name FROM tbl_news JOIN tbl_news_grp ON tbl_news_grp.id = tbl_news.id ");

            return $query->result_array();
        }

        $query = $this->db->get_where('tbl_news',array('id' => $id));
        return $query->result_array();
    }
}

我收到此错误:

Fatal error: Call to a member function result_array() on a non-object in 
C:\xampp\htdocs\ipkoroosh\application\models\news_model.php on line 19

5 个答案:

答案 0 :(得分:1)

你的where条件如何工作你没有上面的查询,这两个条件都不会一次运行所以需要使用else并根据你改进查询

public function get_news($id = false)
    {
        if ($id === false) {
            $query = $this->db->query("SELECT tblnews.*,tblnewsgrp.* FROM tbl_news tblnews JOIN tbl_news_grp tblnewsgrp ON tblnewsgrp.id = tblnews.id");

            return $query->result_array();
        }
        else {
           $query = $this->db->query("SELECT * FROM tbl_news WHERE id = '$id'");
            return $query->result_array();
        }
    }

答案 1 :(得分:0)

Result有一个可选的$ type参数,用于决定返回的结果类型。默认情况下($ type =“object”),它返回一个对象(result_object())。它可以设置为“array”,然后它将返回一个结果数组,相当于caling result_array()。第三个版本接受一个自定义类作为结果对象。

/**
* Query result. Acts as a wrapper function for the following functions.
*
* @param string $type 'object', 'array' or a custom class name
* @return array
*/
public function result($type = 'object')
{
if ($type === 'array')
{
    return $this->result_array();
}
elseif ($type === 'object')
{
    return $this->result_object();
}
else
{
    return $this->custom_result_object($type);
}
}

参考:Stackoverflow Answer

答案 2 :(得分:0)

正确检查您的查询我认为它没有给出结果所以这个错误就在那里。

用它来检查。 $查询 - >结果();

答案 3 :(得分:0)

变化:

return $query->get()->result_array();

代替

return $query->result_array();

答案 4 :(得分:0)

尝试使用$ this-> db-> last_query();来打印您的SQL查询;并在mysql控制台上运行查询。 SQL查询中可能存在错误。

请检查