Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O software do fórum deve literalmente DELETAR tópicos/postagens com moderação ou simplesmente ocultar?


Isso depende de você e geralmente uma questão de quão importante são os dados que você está excluindo ou quão tolerante você quer ser com acidentes.

O método que gosto de usar é ter um banco de dados clone para itens que você deseja excluir. Ao excluir, copie o conteúdo da linha selecionada para o novo banco de dados e, em seguida, exclua. Ter artigos ou itens extras "excluídos" em seu sistema está apenas usando mais espaço e, eventualmente, tornará as consultas mais lentas (potencialmente).

Depois de preencher seu banco de dados de "excluir artigos", execute um despejo, arquive, trunque.

Digamos que você tenha o banco de dados CMS com uma tabela chamada ARTIGOS que deseja armazenar os posts deletados, vamos criar um banco de dados idêntico com a mesma estrutura de tabelas:
CREATE DATABASE `deleted`;
CREATE TABLE deleted.cmsarticles LIKE CMS.ARTICLES;

No seu script PHP que está excluindo o conteúdo, você faria algo assim:
//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']}");
    }
}