7

I know this type of question has been asked over and over, but I couldn't find a solution for my problem, so I hope you can help me. I am using WP 3.3. and I have created a custom table. Now I want to insert some data into it, but I can't get it working. This is my code:

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
                )
                );

I am trying to insert data for several hours now without luck. To my eyes the code is correct, but I guess I am just mussing something important here. Any pointers would be appreciated! Thank you

  • 4
    Use $wpdb->print_error(); in the next line to insert and check if it throws any errors. – tamilsweet Dec 27 '11 at 5:07
  • Many thanks. $wpdb->show_errors() did not show anything but print_error() pointed exactly what the problem was! – Valentin Despa Nov 2 '12 at 10:02
13

When $wpdb method doesn't perform as it should it is likely issue with resulting SQL query (because of wrong input or something else).

Follow wpdb reference in Codex for troubleshooting:

  • enable database error display via $wpdb->show_errors()
  • check what query is being formed and run via $wpdb->last_query
1

The wpdb-class does not have an insert; you shouldn't use the query; see the codex and you dont find this function insert() - http://codex.wordpress.org/Class_Reference/wpdb

An example to insert a custom table on WPDB; use an default CREATE TABLE-SQL Syntax and create with the query() of wpdb the table with your values.

        $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) )"
        );

To insert this source use the register_activation_hook()-hook; only on activation the plugin will install the table, if it doesn't exists. On register_uninstall_hook() I delete custom tables.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.