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

致命错误:对非对象上的成员函数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结果集,所以我很困惑为什么这个结果不起作用。


万千封印
浏览 883回答 3
3回答

神不在的星期二

这是因为查询中有一个错误。MySQli->query()错误时将返回false。将其更改为如下所示:$result = $this->database->query($query);if (!$result) {     throw new Exception("Database Error [{$this->database->errno}] {$this->database->error}");}如果有错误的话应该会抛出一个异常.。

HUH函数

查询很可能失败,查询调用返回布尔值false(或某种错误对象),然后尝试将其用作结果集对象,从而导致错误。试着做些类似的事情var_dump($result)看看你到底得到了什么。每次数据库查询调用后检查错误。即使查询本身在语法上是有效的,仍然有太多的原因导致它失败-每次检查错误都会在某种程度上为您节省很多麻烦。

慕容森

我碰巧错过了查询中的空格,出现了这个错误。Ex: $sql= "SELECT * FROM";$sql .= "table1";虽然示例看起来很简单,但在编写复杂查询时,出现此错误的概率很高。我错过了单词“表1”之前的空格。
打开App,查看更多内容
随时随地看视频慕课网APP