Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le logiciel de forum devrait-il littéralement SUPPRIMER les sujets/messages lors de la modération ou simplement se cacher ?

C'est à vous de décider et il s'agit généralement de déterminer l'importance des données que vous supprimez ou la tolérance que vous souhaitez faire face aux accidents.

La méthode que j'aime utiliser est d'avoir une base de données clone pour les éléments que vous souhaitez supprimer. Lors de la suppression, copiez le contenu de la ligne sélectionnée dans la nouvelle base de données, puis supprimez. Avoir des articles ou des éléments supplémentaires "supprimés" dans votre système utilise simplement plus d'espace et finira par ralentir les requêtes (potentiellement).

Une fois que vous avez rempli votre base de données "supprimer des articles", lancez un dump, archivez, tronquez.

Supposons que vous ayez la base de données CMS avec une table appelée ARTICLES dans laquelle vous souhaitez stocker les publications supprimées, nous allons créer une base de données identique avec la même structure de table :

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

Dans votre script PHP qui supprime le contenu, vous feriez quelque chose comme ceci :

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