Php 致命错误:对非对象调用成员函数fetch_assoc()
我正在尝试执行一些查询,以获得有关某些图像的信息页面。我写了一个函数Php 致命错误:对非对象调用成员函数fetch_assoc(),php,mysqli,Php,Mysqli,我正在尝试执行一些查询,以获得有关某些图像的信息页面。我写了一个函数 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_uploade
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;
}
它会根据这些图像的流行程度选择一页。我编写了一个处理与数据库交互的数据库
类和一个保存图像信息的图像
类。当我试图运行此命令时,我得到一个错误
Fatal error: Call to a member function fetch_assoc() on a non-object
$result
是一个mysqli resultset,所以我不明白为什么它不起作用。很可能是您的查询失败了,查询调用返回了一个布尔值FALSE(或某种错误对象),然后您尝试将其当作resultset对象使用,从而导致了错误。尝试类似于var\u dump($result)
的方法,看看你真正得到了什么
在每次数据库查询调用后检查错误。即使查询本身在语法上是有效的,它也有太多的失败原因——每次检查错误都会在某个时候为您省去很多痛苦。这是因为您的查询中有错误。错误时将返回false。将其更改为如下内容:
$result = $this->database->query($query);
if (!$result) {
throw new Exception("Database Error [{$this->database->errno}] {$this->database->error}");
}
如果出现错误,则会引发异常…我的查询中碰巧遗漏了空格,因此出现了此错误
Ex: $sql= "SELECT * FROM";
$sql .= "table1";
虽然这个例子看起来很简单,但在编码复杂查询时,出现这种错误的概率很高。单词“table1”前缺少空格。请检查是否已关闭数据库连接。
在我的例子中,我得到了错误,因为连接在上一行很近。var_dump on$result确认这是一个mysqli结果集?
致命错误:当不在对象上下文中时使用$this
请检查是否已经有一个七年前的问题的可接受答案,它会告诉你同样的事情