Mysql
 sql >> Database >  >> RDS >> Mysql

Il software del forum dovrebbe letteralmente ELIMINARE argomenti/post con moderazione o semplicemente nasconderlo?

Dipende da te e di solito è una questione di quanto siano importanti i dati che stai eliminando o di quanto vuoi essere tollerante con gli incidenti.

Il metodo che mi piace usare è avere un database clone per gli elementi che desideri eliminare. Al momento dell'eliminazione, copia il contenuto della riga selezionata nel nuovo database, quindi elimina. Avere articoli o elementi "cancellati" extra nel tuo sistema sta solo consumando più spazio e alla fine rallenterà le query (potenzialmente).

Una volta riempito il database "elimina articoli", esegui un dump, archivia, tronca.

Supponiamo che tu abbia il database CMS con una tabella chiamata ARTICOLI di cui vuoi memorizzare i post eliminati, creeremo un database identico con la stessa struttura di tabella:

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

Nel tuo script PHP che sta eliminando il contenuto, faresti qualcosa del genere:

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