Eliminando datos de una tabla personalizada en WordPress
20 jun 2015, 10:11:05
Vistas: 32K
Votos: 1
Estoy tratando de eliminar registros de mi tabla personalizada pero no elimina nada.
Aquí está mi código:
<?php
global $wpdb;
$retrieve_data = $wpdb->get_results( "SELECT * FROM wp_paypal" );
// algo de código para mostrar aquí...
?>
<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
Comentarios
Todas las respuestas a la pregunta
2
0
Sé que llego tarde... pero el principal problema en tu pregunta es que estás usando comillas simples (') en tu declaración:
$wpdb->query(
'DELETE FROM $wpdb->paypal
WHERE id = "'.$myid.'"
'
);
Esto significa que $wpdb->paypal
no está produciendo el resultado que esperas. Primero, asumes que esto muestra el nombre de la tabla "paypal". Pero no es así.
Si $myid
tiene un valor de 4
, tu código PHP producirá esta sentencia SQL:
DELETE FROM $wpdb->paypal WHERE id = 4
... en lugar de ser:
DELETE FROM wp_paypal WHERE id = 4
Para solucionar el problema, debes:
- Cambiar tus comillas simples a comillas dobles. (Lee por qué)
- Agregar el prefijo de la tabla antes del nombre de la tabla.
Así:
$table_name = $wpdb->prefix . 'paypal';
$wpdb->query( "DELETE FROM {$table_name} WHERE id = '{$myid}'" );
Además, asegúrate de sanitizar la variable $myid
porque si envío el valor 0 OR 1=1
, esto producirá esta sentencia SQL:
DELETE FROM wp_paypal WHERE id = 0 OR 1=1
... y eliminará todas las filas de la tabla

Maxime
133
30 nov 2018 15:18:26
Preguntas relacionadas
1
respuestas