user1074438
user1074438

Reputation:

Zend db select how to know return zero rows?

This is my code:

public function is_existing($url) {
    $query = $this->select()
        ->where("url=?",$url);

    if(!$query) {
        return false;
    } else {
        $row = $this->fetchRow($query);
        $row = $row->toArray();
        return $row;
    }
}

But sometimes, I receive

Fatal error: Call to a member function toArray() on a non-object in...

Is it right to use if(!$query) to check the existing rows in DB?

Upvotes: 1

Views: 2702

Answers (2)

ChrisR
ChrisR

Reputation: 14447

Is it right to use if(!$query) to check the existing rows in DB ?

No, you should evaluate the result of fetchRow to determine if there are results, fetchRow either returns a Zend_Db_Table_Row or null if no rows are found.

public function is_existing($url) {
    $query = $this->select()
        ->where("url=?",$url);
    $row = $this->fetchRow($query);

    if(is_null($row)) {
        return false;
    } else {
        return $row->toArray();
    }
}

Upvotes: 1

Mr Coder
Mr Coder

Reputation: 8186

Change your code to this

public function is_existing($url) {
    $query = $this->select()
        ->where("url=?",$url);
$row = $this->fetchRow($query);
    if(!$row) {
        return false;
    } else {

        return $row->toArray();

    }
}

Because $query object will always be created irrespective $url matches record or not hence will always pass if condition .

Upvotes: 1

Related Questions