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 중국어 웹사이트의 기타 관련 기사를 참조하세요!