Come eliminare tutti i record o svuotare una tabella personalizzata del database?

4 dic 2013, 19:59:00
Visualizzazioni: 26.8K
Voti: 11

Non riesco a trovare un modo semplice e affidabile per farlo - forse così?:

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

// ritorno ##
$return = __('Tabella Svuotata.');
if ( $wpdb->last_error ) {
    $return = $wpdb->last_error;
}

Ma questo mi restituisce il classico:

C'è un errore nella sintassi SQL; controlla il manuale corrispondente alla tua versione di MySQL per la sintassi corretta da utilizzare vicino a '* FROM wp_table_name' alla riga 1

5
Commenti

Non sono sicuro, ma non dovresti usare $wpdb invece di $this?

GhostToast GhostToast
4 dic 2013 20:07:10

L'SQL sembra corretto se hai una tabella chiamata wp_table_name, il che dubito. C'è anche truncate. Però non capisco come questa sia una domanda su WordPress.

s_ha_dum s_ha_dum
4 dic 2013 20:11:19

@s_ha_dum - grazie, il table_name è nella whitelist.. Penso che usare $wpdb renda questa una domanda su WP.. si tratta di un plugin WP che utilizza una tabella nel database WP.. Ho aggiunto una risposta qui sotto - grazie ancora!

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

Ma non è un errore di $wpdb. È semplicemente un errore SQL.

s_ha_dum s_ha_dum
4 dic 2013 20:53:05

non è vero che tutti gli errori di WordPress sono errori PHP, con la stessa logica ;)

Q Studio Q Studio
4 dic 2013 23:29:23
Tutte le risposte alla domanda 4
0
15

Vorrei semplicemente modificare l'esempio di Q Studio in:

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

Grazie @s_ha_dum - TRUNCATE fa esattamente al caso nostro:

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

Con 2 anni di ritardo, ma magari questo aiuterà qualcuno in futuro :)

La sintassi corretta per eliminare righe da una tabella MySQL è:

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

Questa risposta arriva in ritardo e la soluzione è già stata accettata. Ma nessuno ha menzionato che la tua istruzione SQL DELETE è errata. Prova così:

DELETE FROM `wp_table_name`

Tuttavia, potrebbe ancora non funzionare. Potresti dover modificare le impostazioni di MariaDB/MySQL, che proteggono da eliminazioni di questo tipo per evitare che si cancellino accidentalmente interi set di dati. Per farlo funzionare, devi usare:

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

Saluti

5 mar 2017 01:02:19