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.'"
              '
        );

    }
}
1
Commenti

Quale problema stai affrontando?

sakibmoon sakibmoon
20 giu 2015 10:51:54
Tutte le risposte alla domanda 2
0

Prova a usare $wpdb->prefix invece di $wpdb nella query di eliminazione.

Esempio:

 $wpdb->query(
              'DELETE FROM '.$wpdb->prefix.'paypal
               WHERE id = "'.$myid.'"'
);
20 giu 2015 14:47:08
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:

  1. Cambiare gli apici singoli con doppi apici. (Leggi perché)
  2. 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

30 nov 2018 15:18:26