I am quite new in WP Plugin World. I am trying to develop a plugin in WP 3.1 when I am trying to insert data into my table named “wp_enam
” in the following way:
$wpdb->insert($wpdb->enam, array('username' => "enam" ,
'useremail' => "myemail@somedomain.com"));
it is not working.
I try to debug it in following way:
$wpdb->show_errors();
$wpdb->insert($wpdb->enam, array('username' => "enam" ,
'useremail' => "myemail@somedomain.com"));
$wpdb->print_error();
Now I am getting following message from MR.WP
WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','myemail@somedomain.com')
WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','myemail@somedomain.com')
As you can see the table name is not showing in the mysql query. Is this a correct way to access a table name with $wpdb->my_table
? I am using mysql. Thanks in advance.
Edit 1:
Looks like $wpdb->tblname
do not add the table prefix anymore! As per “Professional WordPress Wrox” by Hal Stern, David Damstra and Brad Williams” (which is a great book ) it should work. The above functionality is explained at this book in the following way:
$wpdb->my_custom_table to reference the table in WordPress.
This translates to wp_my_custom_table if wp_ is the table prefix.
This is the proper way to determine the correct table prefix when working with tables in the WordPress database.
(Page:107)
You can check database function for database here. For the table prefix matter you should use
$wpdb->prefix . 'enam'
and it will return the table prefix. Just add the table name with this. So the total code would be :so your total code could be something like:
EDIT:
If you need more information you can see THIS article. This is very useful article for creating plugin with database.
You should use something like
instead.
If you don’t wan’t to repeat your table name through your code save it in a variable or create a function like this one: (nothing cool, but I use it this way, works if you have just one custom table, so it is not very versatile..)
I think the wpdb->enam is incorrect, it doesnt exist , you just have to enter tablename there.