Nếu không tìm thấy hàng nào thì PDO ::fetch trả về false. Đây là sự thật. Vì vậy, hãy thay đổi chức năng của bạn:
function(){
$success = $this->query($query, $bindvalues);
if(!$success) {
//handle error
return false;
}
$rows = $this->stmt->fetch(PDO::FETCH_ASSOC);
return $rows ?: null;
}