¿Cómo eliminar todos los registros o vaciar una tabla personalizada de la base de datos?

4 dic 2013, 19:59:00
Vistas: 26.8K
Votos: 11

No logro encontrar una manera simple y confiable de hacer esto - ¿quizás?:

// eliminar fila ##
global $wpdb;
$delete = $wpdb->query( 
    $wpdb->prepare( 
         "DELETE * FROM `wp_table_name`"
    )
);

// retornar ##
$return = __('Tabla Vaciada.');
if ( $wpdb->last_error ) {
    $return = $wpdb->last_error;
}

Pero esto me da el clásico error:

Hay un error en la sintaxis SQL; consulte el manual que corresponde a su versión del servidor MySQL para conocer la sintaxis correcta cerca de '* FROM wp_table_name' en la línea 1

5
Comentarios

No estoy seguro, pero ¿no deberías usar $wpdb en lugar de $this?

GhostToast GhostToast
4 dic 2013 20:07:10

El SQL parece correcto si tienes una tabla llamada wp_table_name, lo cual dudo. También existe truncate. Aunque no veo cómo esto es una pregunta sobre WordPress.

s_ha_dum s_ha_dum
4 dic 2013 20:11:19

@s_ha_dum - gracias, el table_name está en la lista blanca.. Creo que usar $wpdb hace que esto sea una pregunta de WP.. esto es un plugin de WP que usa una tabla en la base de datos de WP.. He añadido una respuesta abajo - ¡gracias de nuevo!

Q Studio Q Studio
4 dic 2013 20:17:00

Pero no es un error de $wpdb. Es simplemente un error de SQL.

s_ha_dum s_ha_dum
4 dic 2013 20:53:05

¿no es cierto que, con la misma lógica, todos los errores de WordPress son errores de PHP? ;)

Q Studio Q Studio
4 dic 2013 23:29:23
Todas las respuestas a la pregunta 4
0
15

Solo modificaría el ejemplo de Q Studio a:

global $wpdb;
$table  = $wpdb->prefix . 'table_name';
$delete = $wpdb->query("TRUNCATE TABLE $table");
22 feb 2016 04:36:43
0
13

Gracias @s_ha_dum - TRUNCATE hace el trabajo perfectamente:

// eliminar fila ##
global $wpdb;
$delete = $wpdb->query("TRUNCATE TABLE `wp_table_name`");
4 dic 2013 20:19:25
0

2 años tarde, pero quizás esto ayude a alguien en el futuro :)

La sintaxis correcta para eliminar filas de una tabla MySQL es:

DELETE FROM `wp_table_name`
WHERE 1 = 1;
15 dic 2015 21:00:29
0

Esto llega tarde y la respuesta ya ha sido aceptada. Pero nadie mencionó que tu sentencia SQL DELETE es incorrecta. Prueba esto:

DELETE FROM `wp_table_name`

Sin embargo, esto podría no funcionar todavía. Es posible que necesites cambiar la configuración de tu MariaDB/MySQL, que protege este tipo de eliminaciones para evitar que borres accidentalmente un conjunto completo de datos. Para que funcione, debes hacer:

DELETE FROM `wp_table_name` WHERE `some_column` = 'some_value'

Saludos

5 mar 2017 01:02:19