>백엔드 개발 >PHP 튜토리얼 >MySQLi에서 '비객체에 대한 멤버 함수 fetch_assoc() 호출' 오류를 수정하는 방법은 무엇입니까?

MySQLi에서 '비객체에 대한 멤버 함수 fetch_assoc() 호출' 오류를 수정하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-07 20:22:16445검색

How to Fix the

"비객체에서 멤버 함수 fetch_assoc() 호출" 오류 문제 해결

mysqli 확장을 사용하여 데이터베이스 쿼리를 실행할 때 다음과 같은 문제가 발생할 수 있습니다. 오류 "치명적인 오류: 개체가 아닌 개체에서 fetch_assoc() 멤버 함수를 호출합니다." 이 오류는 쿼리가 실패하고 결과 mysqli 결과 집합이 null인 경우에 발생합니다.

문제 분석

주어진 코드 조각에서는 $result 변수가 이후에 오류를 확인하지 않기 때문에 오류가 발생합니다. 쿼리가 실행됩니다. 따라서 쿼리가 실패하면 $result가 null이 되어 fetch_assoc()에 대한 후속 호출이 실패할 수 있습니다.

해결 방법

이 문제를 해결하려면 다음을 확인해야 합니다. 오류에 대한 mysqli_query() 호출의 결과입니다. 쿼리가 실패하면 오류를 나타내기 위해 예외가 발생해야 합니다. 아래 수정된 코드는 다음과 같습니다.

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";
    $result = $this->database->query($query);

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

    $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;
}

if(!$result) 검사를 추가하면 이 코드는 모든 데이터베이스 오류가 정상적으로 처리되고 적절한 예외가 발생하는지 확인합니다.

위 내용은 MySQLi에서 '비객체에 대한 멤버 함수 fetch_assoc() 호출' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.