1

私は現在、MySQLインターフェース用にDoctrineのDBALライブラリを使用しており、現在、以下を中心に構造を構築しています。

public function update(array $data, $id)
{
    return $this->db->update($this->table, $data, array('id' => $id));
}

もちろん、影響を受ける行の数を返します。現在の問題は、更新が成功したときにトリガーされる更新後に特定のアクションを実行することです。現在のシステムでは、レコードを「編集」して(フォームのみを表示)、すぐに保存を押すと、上記の更新機能の結果を確認するため、エラーが返されます。これにより、サイトにエラーが表示されるだけでなく、他の「正常な更新」アクションが実行されなくなります。

影響を受ける行の外で更新を実行できなかったかどうかを確認する方法はありますか?これを完全に無視して、更新が常に機能すると想定できますか?致命的なエラーをキャッチするには、例外をトラップするだけで十分でしょうか?

4

3 に答える 3

1

更新はほとんどの場合機能すると想定できますが、おそらくトランザクションを調べたいと思うでしょう。トランザクションは、何かがうまくいかない場合に例外を処理し、DB の整合性を維持するための最良の方法です。PHP は、この回答で概説されている理由により、致命的なエラーから回復するための従来の手段を提供していません。

于 2012-03-15T14:25:26.663 に答える
1

更新は常に機能すると想定できます。無効なフィールド名や制約違反などの重大な問題に対して例外がスローされます。これを確信するためだけに、いくつかのテスト ケースを作成することを検討してください。

update() メソッドではエスケープが行われないことに注意してください。そのため、データをクレンジングするのはあなた次第です。

于 2012-03-15T14:21:22.167 に答える