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)DBの既存の行をチェックするために使用するのは正しいですか?

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

    }
}

$query オブジェクトは、 $url がレコードに一致するかどうかに関係なく常に作成されるため、 if condition は常にパスします。

于 2012-04-25T06:46:47.220 に答える
1

DB の既存の行を確認するために if(!$query) を使用するのは正しいですか?

いいえ、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();
    }
}
于 2012-04-25T06:46:48.593 に答える