sql >> Databasteknik >  >> RDS >> Mysql

Bör forummjukvaran bokstavligen TA BORT ämnen/inlägg vid moderering eller helt enkelt gömma sig?

Det är upp till dig och vanligtvis en fråga om hur viktig informationen du raderar är, eller hur tolerant du vill vara med olyckor.

Metoden jag gillar att använda är att ha en klondatabas för objekt som du vill ta bort. Vid radering kopierar du innehållet i den valda raden till en ny databas och tar sedan bort. Att ha extra "borttagna" artiklar eller objekt i ditt system tar bara upp mer utrymme och kommer så småningom att sakta ner frågorna (potentiellt).

När du har fyllt upp din "radera artiklar"-databas, kör en dumpning, arkivera, trunkera.

Låt oss säga att du har databasen CMS med en tabell som heter ARTICLES som du vill lagra borttagna inlägg, vi kommer att skapa en identisk databas med samma tabellstruktur:

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

I ditt PHP-skript som tar bort innehållet skulle du göra något så här:

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


  1. Ökad MySQL Query-prestanda - Math tung fråga

  2. Den ultimata MySQL äldre databas mardröm

  3. Laravel - Paginera Slumpmässiga poster

  4. Oracle trunkering kolumn