データベースで実行されたすべてのアクションの監査に使用される新しいテーブルをデータベースに作成することにしました。
私のテーブル「アクティビティ」はかなり単純で、次の列が含まれています。
- activity_id-主キー
- user_id-ユーザーの外部キー
- アクション-実行されているクエリのタイプ(SELECT、UPDATE、DELETE)
- table-影響を受けるテーブルの名前
- 行-影響を受ける行の名前
現在私が行っているのは、クエリが実行されたときに、「アクティビティ」テーブルに情報を挿入する別のクエリが後にあります。
コード:
//query
$db->query("DELETE FROM foo WHERE id = '$foo->id'");
//activity record query
$db->query("INSERT INTO acitivity ( user_id, action, table, row ) VALUES ('$user->id', 'Deleted' , '$foo->id', 'foo')");
ご覧のとおり、クエリごとに手動でこれを行う必要があり、システムには100を超えるクエリがあり、何が起こったかを記録するために個々のクエリを入力する必要はありません。
実行されたアクションを教えてくれるMySQLの機能はありますか、それともPHPに役立つライブラリやテクニックはありますか?
または、システムに100個の個別のクエリを書き出す運命にありますか?
ありがとう