1

这是我的代码:

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)检查数据库中的现有行是否正确?

4

2 回答 2

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 对象,因此将始终通过 if 条件。

于 2012-04-25T06:46:47.220 回答
1

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

不,您应该评估 fetchRow 的结果以确定是否有结果,fetchRow返回 aZend_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();
    }
}
于 2012-04-25T06:46:48.593 回答