Domanda

Ho deciso di creare una nuova tabella nel mio database che verrà utilizzato per la verifica tutte le azioni eseguite sul mio database.

Il mio tavolo "attività" è abbastanza semplice e contiene le seguenti colonne:

  • activity_id - la chiave primaria
  • user_id - chiave esterna degli utenti
  • azione - tipo di query in corso di esecuzione (SELECT, UPDATE, DELETE)
  • Tavolo - nome della tabella interessata
  • fila - nome della riga interessata (s)

Quello che sto facendo in questo momento è quando viene eseguita una query Poi ho un'altra domanda dopo che inserisce le informazioni in mio "attività" della tabella.

codice:

//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')");

Come si può vedere che sto avendo a farlo manualmente per ogni query e ho più di 100 domande nel mio sistema e io davvero non voglio avere a digitare una query individuale per registrare ciò che accade.

Mi chiedevo c'è qualche funzionalità in MySQL che mi può dire che cosa sono state eseguite le azioni o c'è qualche librerie o tecniche in PHP che mi può aiutare?

O sono condannato a scrivere 100 singole query nel mio sistema?

Grazie

È stato utile?

Soluzione

Crea sull'inserto, ON_UPDATE e trigger ON_DELETE per la vostra tavola che i dettagli di scrittura di tutte le modifiche a una tabella di attività di revisione

Altri suggerimenti

Che dire di creare trigger?

Questa non è una buona idea per fare il controllo in PHP.

Che ne dite di fare un nuovo metodo per la classe, dire $db->ql() (da query/log) che le prime marche la query normale, che prende il mysql_affected_rows() e lo fa qualcosa di simile

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

In questo modo avrete una storia completa delle vostre domande, non solo il tipo di query e la tabella è stato eseguito su.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top