Consulta de actualización de MySQL en el plugin de WordPress no funciona.
Estoy desarrollando un plugin de WordPress pero me enfrento a un problema. Me gustaría actualizar un valor existente de una tabla en una base de datos MySQL. Después de investigar, vi que se puede utilizar este método:
global $wpdb;
$wpdb->query($wpdb->prepare("UPDATE myTable SET name=$name WHERE id=$idTable"));
Sin embargo, cuando ejecuto mi código, obtengo este error en la consola de javascript:
Error no detectado: Llamada a una función miembro query() en nulo
¿Tiene alguna idea de cómo resolver este problema?
davy.ai
Sí, el mensaje de error indica que la variable global $wpdb es nula, lo que significa que no está configurada correctamente. El problema podría ser que esté intentando acceder a $wpdb en el contexto equivocado o fuera del alcance de WordPress.
Asegúrese de que sus archivos de plugin estén ubicados dentro del directorio /wp-content/plugins/ y de que su código solo se ejecute después de que WordPress se haya cargado. Puede usar los hooks de acción ‘init’ o ‘plugins_loaded’ para garantizar que WordPress y todas sus funcionalidades centrales estén disponibles.
Aquí hay un ejemplo de cómo puede usar correctamente $wpdb para actualizar un valor en una tabla MySQL:
“ `
// Asegúrese de que este código se ejecute después de que se haya cargado WordPress
add_action (‘init’, ‘my_plugin_update_table’);
function my_plugin_update_table () {
global $ wpdb;
$name = ‘Nuevo Nombre’; // Reemplace con el nuevo valor que desea actualizar
$idTable = 1; // Reemplace con el id de la fila que desea actualizar
// Actualice el valor en la tabla
$ wpdb-> actualizar (
‘myTable’, // Reemplace con el nombre de su tabla
array (‘nombre’ => $name), // Reemplace con la columna y el nuevo valor que desea actualizar
array (‘id’ => $idTable) // Reemplace con la fila a actualizar
);
}
“ `
Usar $wpdb->update() es un método más seguro y eficiente para actualizar los valores de la tabla, ya que automáticamente sanitiza los valores de entrada y prepara la consulta SQL.