Php 连接到新服务器时出现CodeIgniter 2错误。对成员函数num_rows()的调用
我在我的个人网络服务器上建立了一个网站。一切都很顺利。当我把它放在网上,导入并连接数据库时,我发现一个核心文件出现了一些奇怪的错误 致命错误:对第986行**/system/database/DB_active_rec.php中的非对象调用成员函数num_rows() 我已经测试并确认数据库正在连接。因此,这一定是服务器配置问题。但是有人能告诉我这是什么吗 这个问题是从数据库连接问题开始的,我通过将db_debug更改为false修复了这个问题 我的一部分人认为这是新Web服务器上的内存问题Php 连接到新服务器时出现CodeIgniter 2错误。对成员函数num_rows()的调用,php,mysql,codeigniter,codeigniter-2,Php,Mysql,Codeigniter,Codeigniter 2,我在我的个人网络服务器上建立了一个网站。一切都很顺利。当我把它放在网上,导入并连接数据库时,我发现一个核心文件出现了一些奇怪的错误 致命错误:对第986行**/system/database/DB_active_rec.php中的非对象调用成员函数num_rows() 我已经测试并确认数据库正在连接。因此,这一定是服务器配置问题。但是有人能告诉我这是什么吗 这个问题是从数据库连接问题开始的,我通过将db_debug更改为false修复了这个问题 我的一部分人认为这是新Web服务器上的内存问题 $
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '***';
$db['default']['password'] = '***';
$db['default']['database'] = '***';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
这可能是很多事情。看起来您的脚本期望从数据库行返回一个值,但没有得到任何值。你的986线是什么?是Github吗?您的新数据库是否在与之相关的字段中接受null?您可能忘记了在模型中的查询末尾添加
result()。典型的模型函数应如下所示:
$q=$this->db->get('table_name')->result();
return $q;
如果在foreach
中使用模型函数,则该函数应返回一个数组()。查看控制器内部。我也遇到了同样的问题(这是第二次,因此我觉得我应该深入研究这个主题,可能会帮助某些人),请检查:
- 如果您没有忘记在远程服务器上导入表
- 如果表名拼写错误(例如-而不是uux)
您还可以检查表名(大写/小写)。对我来说这很有帮助。这是986if($query->num_rows()==0){return 0;}
不是在github上,它是来自开发服务器的同一个数据库。这一定是某种服务器差异。将代码粘贴到发生错误的位置可能更有用,但为什么它在一台服务器上工作得很好,然后在另一台服务器上工作得不同呢。代码不应该是导致它崩溃的原因,是吗?我猜您的本地数据库与服务器数据库不一样。您能确认所有数据都是相同的吗?我认为您的控制器接收到的是一个空变量,而不是一个空数组,因此这可能是问题所在。我可以确认DB是相同的。我把它导出,然后导入。没有更改,也没有错误。请对一些处理数据的代码进行注释,并尝试找到导致问题的正确代码行。并将探查器
添加到控制器中。