Cum să ștergi toate înregistrările sau să golești un tabel personalizat din baza de date?

4 dec. 2013, 19:59:00
Vizualizări: 26.8K
Voturi: 11

Nu pot găsi o modalitate simplă și de încredere pentru a face acest lucru - poate așa?:

// șterge rândul ##
global $wpdb;
$delete = $wpdb->query( 
    $wpdb->prepare( 
         "DELETE * FROM `wp_table_name`"
    )
);

// returnează ##
$return = __('Tabel golit.');
if ( $wpdb->last_error ) {
    $return = $wpdb->last_error;
}

Dar aceasta îmi dă clasicul:

Aveți o eroare în sintaxa SQL; verificați manualul care corespunde versiunii serverului MySQL pentru sintaxa corectă de utilizat în apropierea '* FROM wp_table_name' la linia 1

5
Comentarii

Nu sunt sigur, dar nu ar trebui să folosești $wpdb în loc de $this?

GhostToast GhostToast
4 dec. 2013 20:07:10

SQL-ul pare corect dacă ai o tabelă numită wp_table_name, ceea ce mă îndoiesc. Există și truncate. Totuși, nu văd cum aceasta este o întrebare despre WordPress.

s_ha_dum s_ha_dum
4 dec. 2013 20:11:19

@s_ha_dum - mulțumesc, table_name este pe lista de permise.. Cred că folosirea $wpdb face din aceasta o întrebare despre WP.. acesta este un plugin WP care folosește o tabelă în baza de date WP.. Am adăugat un răspuns mai jos - mulțumesc din nou!

Q Studio Q Studio
4 dec. 2013 20:17:00

Dar nu este o eroare $wpdb. Este doar o eroare SQL.

s_ha_dum s_ha_dum
4 dec. 2013 20:53:05

nu este adevărat că toate erorile WordPress sunt erori PHP, prin aceeași logică ;)

Q Studio Q Studio
4 dec. 2013 23:29:23
Toate răspunsurile la întrebare 4
0
15

Aș modifica doar exemplul Q Studio în:

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

Mulțumesc @s_ha_dum - Truncate face treaba perfect:

// șterge rândul ##
global $wpdb;
$delete = $wpdb->query("TRUNCATE TABLE `wp_table_name`");
4 dec. 2013 20:19:25
0

Cu 2 ani întârzire, dar poate acest lucru va ajuta pe cineva în viitor :)

Sintaxa corectă pentru ștergerea rândurilor dintr-un tabel MySQL este:

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

Acest răspuns este întârziat și a fost deja acceptat. Dar nimeni nu a menționat că declarația ta SQL DELETE este incorectă. Încearcă asta:

DELETE FROM `wp_table_name`

Totuși, este posibil ca acest lucru să nu funcționeze. Poate fi necesar să modifici setările MariaDB/MySQL, care protejează astfel de ștergeri pentru a te preveni din a șterge accidental un set întreg de date. Pentru a funcționa, trebuie să folosești:

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

Noroc!

5 mar. 2017 01:02:19