【问题标题】:CodeIgniter: Function call result_array() gives errorCodeIgniter:函数调用 result_array() 给出错误
【发布时间】:2014-04-16 05:18:37
【问题描述】:

我收到这个错误大约一个小时,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

【问题讨论】:

  • 能否请您提供更多代码,看起来对象制作和使用存在一些问题
  • @Arihant 现在呢?
  • 你在构造函数中加载了数据库吗??? $this->load->database();
  • 你可以看到我做的 ;)
  • 这些字段没有被选中,它们的相关表名 fa_shrt_name、en_shrt_name、fa_text、en_text、grp_id、image。它们可能模棱两可

标签: php codeigniter


【解决方案1】:

你的 where 条件是如何工作的

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();
        }
    }

【讨论】:

    【解决方案2】:

    Result 有一个可选的 $type 参数,它决定返回什么类型的结果。默认情况下 ($type = "object"),它返回一个对象 (result_object())。它可以设置为“array”,然后它会返回一个结果数组,相当于调用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

    【讨论】:

      【解决方案3】:

      变化:

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

      改为

      return $query->result_array();
      

      【讨论】:

      • 我使用了 $this->db->query() 所以我不认为这会起作用顺便说一下结果:调用非对象上的成员函数 get()
      【解决方案4】:

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

      请检查

      【讨论】:

        【解决方案5】:

        正确检查您的查询,我认为它没有给出结果,因此存在此错误。

        用这个检查一下。 $query->result();

        【讨论】:

          猜你喜欢
          • 2013-11-09
          • 2018-06-13
          • 2013-08-23
          • 1970-01-01
          • 2020-07-13
          • 2016-05-08
          • 2017-08-14
          • 2016-03-05
          • 2017-10-22
          相关资源
          最近更新 更多