笨应用程序返回`致命错误:调用一个成员函数结果()上线,但不是本地非对象in`

问题描述 投票:1回答:2

我是新来的笨,也以MVC方式OOP所以我已经辞职的事实,这是我犯了一个错误,而不是可能成为一个问题,我自己的代码之外。

我有一个控制器(PURCHASE_ORDER),加载2种型号(Product_m&Supplier_m)+其他。

我建立了一个自定义的MY_Model这需要0 PARAMS和基于模型的设置(表名,primary_key等)的查询。

在我的本地实例(WAMP),它完美的作品。当我上传到Live Web服务器(Linux)的我碰到下面的错误;

Fatal error: Call to a member function result() on a non-object in (MY_Model.php on line 58)

我有一个加载模型(User_m)并通过相同的MY_Model路线通行证和完美的作品在网上和当地另一控制器(用户)。

我只能假设我有一个范围的问题或类似的东西,但我花了近48小时的修复沉迷在无济于事。

我真的希望有人能抽出来见识一下这个问题的时间。

MY_Model

class MY_Model extends CI_Model {    
//Vars
protected $_table_name = '';
protected $_primary_key = 'id';
protected $_primary_filter = 'intval';
protected $_order_by = '';
public $_rules = array();
//protected $_timestamps = FALSE;

//Constructor
function __construct() {
    parent::__construct();
}



// GET
public function get($id = NULL, $single = FALSE) {

    if($id != NULL){
        $filter = $this->_primary_filter;
        $id = $filter($id);
        $this->db->where($this->_primary_key, $id);
        $method = 'row';
    }
    elseif($single == TRUE){
        $method = 'row';
    }
    else{
        $method = 'result';
    }

    if(!count($this->db->ar_orderby)){
        $this->db->order_by($this->_order_by);
    }

    //echo var_dump($this);
    return $this->db->get($this->_table_name)->$method();
    //die('<pre>'.print_r($this->db, true).'</pre>');
}

其他类中删除,因为他们不是问题的一部分。

php codeigniter
2个回答
0
投票

非常感谢所有,但最终@rojoca的相关问题:Looks like $this->db->get($this->_table_name) is returning null. Do you have $db['default']['db_debug'] set to FALSE? It's possible you have some database connection error.这使我的答案;

我以前出口活质数据库的本地实例,以测试其工作的罚款,其天真地让我相信这是不是哪里出了问题了。

我用了它确实有db_debug设置为FALSE直播网站不同的数据库配置设置。重新打开它在迅速识别Web服务器/服务我使用强迫表名称为小写。我完全不知道这一点,我从来没有听说过这个力法的前两种。

教训我。再次感谢您对这个问题的所有援助。所有信贷应该去@rojoca这个答案。谢谢 - 睡眠时间:)


0
投票

发生这种情况时,就意味着你的数据库表中的笨找不到场(这已经发生好几次在我身上)。该解决方案将在理论上创建缺少的字段。

要解决这个错误,我用一个小的解决方案:

 <?php

   public function test($op)
    {
        $this->db->where('op', $op);
        $result = $this->db->get('test');
        return ($result instanceof CI_DB_mysql_result) ? $result->result() : false;
    }

在这里,我们检查,如果变量是CI_DB_mysql_result的一个实例。这个错误是因为该方法不返回这个类的实例!

对不起,我不讲英语。 :)

© www.soinside.com 2019 - 2024. All rights reserved.