Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Soll Forensoftware bei Moderation Themen/Beiträge buchstäblich LÖSCHEN oder einfach verstecken?

Das liegt ganz bei Ihnen und normalerweise ist es eine Frage, wie wichtig die Daten sind, die Sie löschen, oder wie tolerant Sie bei Unfällen sein möchten.

Die Methode, die ich gerne verwende, besteht darin, eine Klondatenbank für Elemente zu haben, die Sie löschen möchten. Kopieren Sie beim Löschen den Inhalt der ausgewählten Zeile in die neue Datenbank und löschen Sie ihn dann. Zusätzliche "gelöschte" Artikel oder Elemente in Ihrem System verbrauchen nur mehr Platz und verlangsamen schließlich Abfragen (potenziell).

Sobald Sie Ihre "Artikel löschen"-Datenbank gefüllt haben, führen Sie einen Speicherauszug aus, archivieren Sie, kürzen Sie.

Nehmen wir an, Sie haben das Datenbank-CMS mit einer Tabelle namens ARTICLES, in der Sie gelöschte Beiträge speichern möchten. Wir erstellen eine identische Datenbank mit derselben Tabellenstruktur:

CREATE DATABASE `deleted`;
CREATE TABLE deleted.cmsarticles LIKE CMS.ARTICLES;

In Ihrem PHP-Skript, das den Inhalt löscht, würden Sie etwa so vorgehen:

//GRAB THE ID OF THE ARTICLE YOU ARE DELETING, MAKE SURE TO SANITIZE!
$article_id=$_POST['id'];
if(is_numeric($article_id) {
    $dbconnect=databaseFunction();
    $result=$dbconnect->query("SELECT `row1`,`row2` FROM `ARTICLES` WHERE `id`=$article_id");
    if($result->num_rows!=0) {
        $row=$result->fetch_array(MYSQLI_ASSOC);
        //Open new connection to deleted database
        $dbconnect2=otherDBFunction();
        $dbconnect2->query("INSERT INTO `cmsarticles`(row1,row2) VALUES ({$row['row1']},{$row['row2']}");
        $dbconnect->query("DELETE FROM `ARTICLES` where `id`={$_POST['id']}");
    }
}