0

これは簡単な質問ですが、周りを見回しても答えが見つかりませんでした。ZF2 で更新/挿入 SQL クエリから影響を受ける行の数を抽出するにはどうすればよいですか?

次のコードはうまく機能しています (更新されます) が、適切なエラー チェックを実行したいと考えています。

public function updateSomeField($id, $some_field){
    $data = array(
        'some_field'  => $some_field
    );

    $sql = new Sql($this->dbAdapter);
    $update = $sql->update();
    $update->table('Table1');
    $update->set($data);
    $update->where(array('id' => $id));
    $statement = $sql->prepareStatementForSqlObject($update);

    // need help with the code below...
    // got this from here:
    // http://stackoverflow.com/questions/11491249/zend-framework-db-update-result
    $result = 0;
    try {
        $result = $statement->execute();        // works fine
    } catch (\Exception $e) {
        die('Error: ' . $e->getMessage());
    }
    if (empty($result)) {                       // not sure if this is applicable??
        die('Zero rows affected');
    }

    return $result;                             // ideally, I'd like to return $numRows
}

現在、成功した場合、$result はオブジェクトです。vardump を試みましたが、値が表示されません。

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

2

これが答えとしての実行中のコードです(コメントよりも簡単に見つけることができるため)

try {
    $affectedRows = $statement->execute()->getAffectedRows();
} catch (\Exception $e) {
    die('Error: ' . $e->getMessage());
}
if (empty($affectedRows)) {
    die('Zero rows affected');
}

return $affectedRows;
于 2014-04-08T09:54:07.787 に答える