Zend db选择如何知道返回零行?

时间:2012-04-25 06:39:41

标签: zend-framework zend-db zend-studio zend-db-table

这是我的代码:

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

但有时,我会收到

  

致命错误:在......

中的非对象上调用成员函数toArray()

使用if(!$query)检查DB中的现有行是否正确?

2 个答案:

答案 0 :(得分:1)

将您的代码更改为此

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

        return $row->toArray();

    }
}

因为无论$ url是否匹配记录,总是会创建$ query对象,因此如果条件将始终传递。

答案 1 :(得分:1)

  

使用if(!$ query)检查DB中的现有行是否正确?

不,您应该评估fetchRow的结果以确定是否有结果,fetchRow如果没有找到行,则返回Zend_Db_Table_Rownull

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();
    }
}