致命错误:在非对象上调用成员函数num_rows()

时间:2014-03-04 08:15:16

标签: php codeigniter session

正如我已经完成了codeigniter项目,将文件从本地服务器转移到了实时服务器,这里的一切似乎都是正确的,

http://royal.skylabsinc.in/

然而显示出一个错误..请帮我解决这个问题...... 这里是一个屏幕截图

  

“致命错误:在非对象中调用成员函数num_rows()   /home2/skylabsi/public_html/royal/system/libraries/Session.php上线   215“

7 个答案:

答案 0 :(得分:2)

我有同样的错误。您可以尝试在数据库中创建 ci_session 表。它解决了我的问题。

答案 1 :(得分:1)

/home2/skylabsi/public_html/royal/system/libraries/Session.php表明问题与会话有关。

Call to a member function num_rows() on a non-object表明预期的对象为空,很可能是由数据库中的错误查询引起的。

我第一次点击链接时也能够加载页面,但刷新/重新访问失败。检查一个不同的浏览器开始一个新的会话,得到同样的事情。第一次加载是好的,后续加载不是。这再次暗示了会话的问题。

答案 2 :(得分:0)

让我猜一下,你的localserver是windows,live server是linux。如果是这样,那么很可能你已经在文件名,类名&中命名了你的模态,其大小写不同。呼叫姓名。

类名必须首字母大写,其余名称小写。确保您的类扩展了基础Model类。

文件名将是您的班级名称的小写版本。

答案 3 :(得分:0)

将以下代码添加到类

private $CI;

public function __construct()
{
     $this->CI = &get_instance();
     $this->load->library('session');
     $this->load->database();
}

答案 4 :(得分:0)

非常快速简短的回答是:

确保您拥有' CI_SESSION '如果您在 $this->load->library('session'); 中设置 config/autoload.php ,则会在您的服务器数据库中使用。

CREATE TABLE IF NOT EXISTS `ci_sessions` (
  `session_id` varchar(40) NOT NULL DEFAULT '0',
  `ip_address` varchar(45) NOT NULL DEFAULT '0',
  `user_agent` varchar(120) NOT NULL,
  `last_activity` int(10) unsigned NOT NULL DEFAULT '0',
  `user_data` text NOT NULL,
  PRIMARY KEY (`session_id`),
  KEY `last_activity_idx` (`last_activity`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

如果您使用 CI_SESSION ,那么您必须拥有 CI_SESSION 表。

答案 5 :(得分:0)

虽然CI_SESSIONS表存在于数据库中,但我也遇到了此错误。 解决方案是:

在我的直播服务器上,我创建了数据库用户和数据库,但我没有将用户分配到数据库,因此这是一个权限问题,我连接的mysql用户没有得到权限读取DB,从而读取表CI_SESSIONS。

答案 6 :(得分:0)

这对我有用

  

从您的config.php中删除这两行

$config['sess_use_database']     = TRUE;
$config['sess_table_name']       = 'ci_sessions';