AH01071: Got error 'PHP message: PHP Fatal error: Call to a member function row_array() on a non-object in /www/XXXXXXXXXXXXXXXX/model.php on line 424\n'
424行的语句是:
function is_followed($cid, $uid) {
$m = $this->db->query ( "SELECT count(*) as num FROM " . $this->db->dbprefix . "follower WHERE uid=$uid AND cid=$cid" )->row_array ();
return $m ['num'];
}
到底哪里错了!!!!!!!!!!!!!
简单的说: $this->db->query ( "SELECT count(*) as num FROM " . $this->db->dbprefix . "follower WHERE uid=$uid AND cid=$cid" )这句本来是要返回一个数据集,然后才可以用
row_array ()方法,现在的问题是你这里的sql没有查询到数据或者sql语法错误,导致返回一个空对象,,认真检查sql语句并做返回值判断就ok了
https://blog.csdn.net/miss_shy/article/details/79378055
$this->db->query ( "SELECT count(*) as num FROM " . $this->db->dbprefix . "follower WHERE uid=$uid AND cid=$cid" )这一句查询失败了,
返回了一个non-object ,你在non-object 上调用row_array ()是不可以的。建议你不要这么一长串的写程序。很多东西还是要判断一下的。
比如你可以先用一个变量存储$this->db->query ( "SELECT count(*) as num FROM " . $this->db->dbprefix . "follower WHERE uid=$uid AND cid=$cid" )的返回值,然后查看这个返回值是否是non-object,是non-object的话就做下错误处理,如果不是non-object,就可以调用row_array ()函数了
暂时不清楚你使用的是什么框架,现在看来你是要在Model里执行此方法,所以我认为应该是$this->query,如果在Controller里执行应该是$this->db->query,如果要想知道确切问题,咱们在讨论
暂时不清楚你使用的是什么框架,现在看来你是要在Model里执行此方法,所以我认为应该是$this->query,如果在Controller里执行应该是$this->db->query,如果要想知道确切问题,咱们在讨论
正常情况下,COUNT()函数在MySQL中至少会返回个0,而不是null。
所以,题主的问题,有几个要确认和检查的地方:
①数据库不是MySQL,它的COUNT()函数是否可能返回null?
②数据库或表不存在,导致查询异常;
③其他地方导致null:"$this->db->query" 或 "$this->db->dbprefix"
拼接完整的SQL,在数据库查询工具中测试,可以排除数据库的问题。
日志打印或Debug观察其他数据,可以排除参数未赋值的问题。