$wpdb->insert no funciona de ninguna manera

26 dic 2011, 23:38:57
Vistas: 41.6K
Votos: 9

Sé que este tipo de pregunta se ha hecho una y otra vez, pero no pude encontrar una solución para mi problema, así que espero que puedan ayudarme. Estoy usando WP 3.3. y he creado una tabla personalizada. Ahora quiero insertar algunos datos en ella, pero no logro que funcione. Este es mi código:

global $wpdb;
$table_name = $wpdb->prefix . "my_data";
$wpdb->insert($table_name, array(
            'my_id'     => NULL,
        'my_day'    => $day,
        'my_month'  => $month,
        'my_abbr'   => $abbr,
        'my_venue'  => $venue,
        'my_geo'    => $geo_one.", ".$geo_two,
        'my_artist' => $artist,
        'my_link'   => $link
                )
                );

Llevo varias horas intentando insertar datos sin éxito. A mi parecer el código es correcto, pero supongo que me estoy perdiendo algo importante aquí. ¡Cualquier indicación sería apreciada! Gracias

2
Comentarios

Usa $wpdb->print_error(); en la siguiente línea para insertar y verificar si muestra algún error.

tamilsweet tamilsweet
27 dic 2011 07:07:02

Muchas gracias. $wpdb->show_errors() no mostró nada pero print_error() señaló exactamente cuál era el problema.

Valentin Despa Valentin Despa
2 nov 2012 12:02:07
Todas las respuestas a la pregunta 2
0
17

Cuando el método $wpdb no funciona como debería, es probable que haya un problema con la consulta SQL resultante (debido a una entrada incorrecta u otro motivo).

Sigue la referencia de wpdb en el Codex para solucionar problemas:

  • activa la visualización de errores de la base de datos mediante $wpdb->show_errors()
  • verifica qué consulta se está formando y ejecutando mediante $wpdb->last_query
27 dic 2011 13:57:45
1
-1

La clase wpdb no tiene un método de inserción. Lo mejor sería que no usaras la consulta; revisa el codex y no encontrarás esta función insert() - http://codex.wordpress.org/Class_Reference/wpdb

Un ejemplo de inserción en una tabla personalizada con WPDB; usa una sintaxis SQL CREATE TABLE predeterminada y crea la tabla con tus valores usando el método query() de wpdb.

        $table = $GLOBALS['wpdb'] -> prefix . 'my_data';
        $GLOBALS['wpdb'] -> query(
            "CREATE TABLE $table (
            called_by varchar(96) NOT NULL,
            my_name varchar(96) NOT NULL,
            my_type varchar(15) NOT NULL,
            first_call int(11) NOT NULL,
            arg_count tinyint(4) NOT NULL,
            file_name varchar(128) NOT NULL,
            line_num smallint NOT NULL,
            PRIMARY KEY (first_call, my_name) )"
        );

Para insertar este código, usa el hook register_activation_hook(); solo durante la activación, el plugin instalará la tabla si no existe. En register_uninstall_hook() elimino las tablas personalizadas.

28 dic 2011 01:53:35
Comentarios

wpdb sí tiene el método insert()

Rarst Rarst
3 ene 2012 21:24:15