Eliminazione dei dati da una tabella personalizzata in WordPress
20 giu 2015, 10:11:05
Visualizzazioni: 32K
Voti: 1
Sto cercando di eliminare dei record dalla mia tabella personalizzata ma non viene eliminato nulla.
Ecco il mio codice:
<?php
global $wpdb;
$retrieve_data = $wpdb->get_results( "SELECT * FROM wp_paypal" );
// qui del codice per la visualizzazione...
?>
<form method="post" enctype="multipart/form-data">
<td><input type="submit" name="delete" value="Delete" /></td>
</form>
<?php
$myid= $retrieved_data->id;
if (isset($_POST['delete'])) {
//global $wpdb;
$wpdb->query(
'DELETE FROM $wpdb->paypal
WHERE id = "'.$myid.'"
'
);
}
}

user3463054
31
Commenti
Tutte le risposte alla domanda
2
0
So che sono in ritardo... ma il problema principale nella tua domanda è che stai utilizzando gli apici singoli (') nella tua istruzione:
$wpdb->query(
'DELETE FROM $wpdb->paypal
WHERE id = "'.$myid.'"
'
);
Questo significa che $wpdb->paypal
non sta producendo il risultato che ti aspetti. In primo luogo, presumi che questo mostri il nome della tabella "paypal". Ma non è così.
Se $myid
ha un valore di 4
, il tuo codice PHP produrrà questa istruzione SQL:
DELETE FROM $wpdb->paypal WHERE id = 4
... invece di essere:
DELETE FROM wp_paypal WHERE id = 4
Per risolvere il problema, devi:
- Cambiare gli apici singoli con doppi apici. (Leggi perché)
- Aggiungere il prefisso della tabella davanti al nome della tabella.
In questo modo:
$table_name = $wpdb->prefix . 'paypal';
$wpdb->query( "DELETE FROM {$table_name} WHERE id = '{$myid}'" );
Inoltre, assicurati di sanitizzare la variabile $myid
perché se inserisco il valore 0 OR 1=1
, questo produrrà questa istruzione SQL:
DELETE FROM wp_paypal WHERE id = 0 OR 1=1
... e cancellerà ogni riga nella tabella

Maxime
133
30 nov 2018 15:18:26
Domande correlate
1
risposte