我是新来的笨,也以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>');
}
其他类中删除,因为他们不是问题的一部分。
非常感谢所有,但最终@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这个答案。谢谢 - 睡眠时间:)
发生这种情况时,就意味着你的数据库表中的笨找不到场(这已经发生好几次在我身上)。该解决方案将在理论上创建缺少的字段。
要解决这个错误,我用一个小的解决方案:
<?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的一个实例。这个错误是因为该方法不返回这个类的实例!
对不起,我不讲英语。 :)