为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

万千封印 2019-06-25 15:34:55
致命错误:对非对象上的成员函数FETCH_Assoc()的调用我正在尝试执行一些查询,以获得有关某些图像的一页信息。我写了一个函数function get_recent_highs($view_deleted_images=false){     $lower = $this->database->conn->real_escape_string($this->page_size * ($this->page_number - 1));     $query = "SELECT image_id, date_uploaded FROM `images` ORDER BY ((SELECT SUM( image_id=`images`.image_id ) FROM `image_votes` AS score) / (SELECT DATEDIFF( NOW( ) , date_uploaded ) AS diff)) DESC LIMIT " . $this->page_size . " OFFSET $lower"; //move to database class     $result = $this->database->query($query);     $page = array();     while($row = $result->fetch_assoc())     {         try         {             array_push($page, new Image($row['image_id'], $view_deleted_images));         }         catch(ImageNotFoundException $e)         {             throw $e;         }     }     return $page;}根据它们的受欢迎程度来选择这些图像的页面。我写了一个Database类处理与数据库和Image类,该类保存有关图像的信息。当我试图运行它时,我会得到一个错误。Fatal error: Call to a member function fetch_assoc() on a non-object$result是一个mysqli结果集,所以我很困惑为什么这个结果不起作用。
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

这是因为查询中有一个错误。MySQli->query()错误时将返回false。将其更改为如下所示:

$result = $this->database->query($query);if (!$result) {
    throw new Exception("Database Error [{$this->database->errno}] {$this->database->error}");}

如果有错误的话应该会抛出一个异常.。


查看完整回答
反对 回复 2019-06-25
?
HUH函数

TA贡献1836条经验 获得超4个赞

查询很可能失败,查询调用返回布尔值false(或某种错误对象),然后尝试将其用作结果集对象,从而导致错误。试着做些类似的事情var_dump($result)看看你到底得到了什么。

每次数据库查询调用后检查错误。即使查询本身在语法上是有效的,仍然有太多的原因导致它失败-每次检查错误都会在某种程度上为您节省很多麻烦。


查看完整回答
反对 回复 2019-06-25
?
慕容森

TA贡献1853条经验 获得超18个赞

我碰巧错过了查询中的空格,出现了这个错误。

Ex: $sql= "SELECT * FROM";$sql .= "table1";

虽然示例看起来很简单,但在编写复杂查询时,出现此错误的概率很高。我错过了单词“表1”之前的空格。


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 882 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信