正如我已经完成了codeigniter项目,将文件从本地服务器转移到了实时服务器,这里的一切似乎都是正确的,
然而显示出一个错误..请帮我解决这个问题...... 这里是一个屏幕截图
“致命错误:在非对象中调用成员函数num_rows() /home2/skylabsi/public_html/royal/system/libraries/Session.php上线 215“
答案 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';