Метод для записи, какие действия выполняются в базе данных? -Mysql / Php

StackOverflow https://stackoverflow.com/questions/9309944

Вопрос

Я решил создать новую таблицу в моей базе данных, которая будет использоваться для аудита всех действий, выполненных в моей базе данных.

Мой стол "Мероприятия" довольно просто и содержит следующие столбцы:

  • Activity_id - первичный ключ
  • user_id - иностранный ключ пользователя
  • Действие - тип выполняемого запроса (выберите, обновление, удаление)
  • Таблица - Имя пораженной таблицы
  • ряд - имя затронутой строки (ы)

Что я делаю в данный момент, так это когда проведен запрос, у меня есть еще один запрос, который вставляет информацию в мою "Мероприятия" стол.

КОД:

//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 отдельных запросов в моей системе?

Спасибо

Это было полезно?

Решение

Создать на вставке, on_update и on_delete триггеры для вашей таблицы, которые записывают подробности всех изменений в таблице действий аудита

Другие советы

Как насчет создания триггеров?

THIA - это не хорошая идея, чтобы провести аудит в PHP.

Как насчет того, чтобы сделать новый метод для своего класса, скажем, $db->ql() (из query/log) это сначала делает обычный запрос, чем берет mysql_affected_rows() И это делает что -то вроде

insert into logs set when = now(), query_string = "{$query}", affected_rows = "{$affected_rows}"

Таким образом, у вас будет полная история ваших запросов, не только тип запроса и таблицы, на котором он был запускается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top