sql >> Databáze >  >> RDS >> Mysql

Měl by software fóra doslova SMAZAT témata/příspěvky při moderování nebo jednoduše skrýt?

To je na vás a obvykle jde o to, jak důležitá jsou data, která mažete, nebo jak tolerantní chcete být k nehodám.

Metoda, kterou rád používám, je mít databázi klonů pro položky, které chcete odstranit. Při odstranění zkopírujte obsah vybraného řádku do nové databáze a poté odstraňte. Mít další „smazané“ články nebo položky ve vašem systému jen zabírá více místa a nakonec (potenciálně) zpomalí dotazy.

Jakmile naplníte svou databázi „smazat články“, spusťte výpis, archivujte, zkraťte.

Řekněme, že máte databázový CMS s tabulkou ČLÁNKY, do které chcete ukládat smazané příspěvky, vytvoříme identickou databázi se stejnou strukturou tabulky:

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

Ve vašem PHP skriptu, který odstraňuje obsah, byste udělali něco takového:

//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. Dobrá prevence před injekcí MYSQL?

  2. jak vytisknu rowName na základě propojovací tabulky?

  3. Nelze se vzdáleně připojit k serveru MySQL pomocí nástroje MySQL Workbench

  4. Oracle SQL dotaz k vyloučení řádků obsahujících nečíselné znaky