sql >> Base de Datos >  >> RDS >> Mysql

¿Debería el software del foro ELIMINAR literalmente temas/publicaciones con moderación o simplemente ocultarlos?

Eso depende de usted y, por lo general, es una cuestión de qué tan importantes son los datos que está eliminando o qué tan tolerante quiere ser con los accidentes.

El método que me gusta usar es tener una base de datos clonada para los elementos que desea eliminar. Al eliminar, copie el contenido de la fila seleccionada en la nueva base de datos y luego elimínelo. Tener artículos o elementos "eliminados" adicionales en su sistema solo está utilizando más espacio y eventualmente ralentizará las consultas (potencialmente).

Una vez que llene su base de datos de "eliminación de artículos", ejecute un volcado, archivo, truncado.

Supongamos que tiene la base de datos CMS con una tabla llamada ARTÍCULOS que desea almacenar publicaciones eliminadas, crearemos una base de datos idéntica con la misma estructura de tabla:

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

En su secuencia de comandos PHP que está eliminando el contenido, haría algo como esto:

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