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' => "[email protected]"));
it is not working.
I try to debug it in following way:
$wpdb->show_errors();
$wpdb->insert($wpdb->enam, array('username' => "enam" ,
'useremail' => "[email protected]"));
$wpdb->print_error();
Now I am getting following message from MR.WP
WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','[email protected]')
WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','[email protected]')
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)
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' => "[email protected]"));
it is not working.
I try to debug it in following way:
$wpdb->show_errors();
$wpdb->insert($wpdb->enam, array('username' => "enam" ,
'useremail' => "[email protected]"));
$wpdb->print_error();
Now I am getting following message from MR.WP
WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','[email protected]')
WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','[email protected]')
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)
Share Improve this question edited Mar 28, 2011 at 18:09 enam asked Mar 27, 2011 at 18:34 enamenam 8471 gold badge8 silver badges11 bronze badges 2- Huh. I don't think that ever worked. Probably worth submitting an errata report, although the newer book "Professional WordPress Plugin Development" doesn't repeat that error, so it may have already been caught. – goldenapples Commented Mar 28, 2011 at 19:35
- @goldenapples Thanks for your reply. I will collect the newer one of that book. – enam Commented Mar 29, 2011 at 5:46
3 Answers
Reset to default 5You 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 :
$yourtablename = $wpdb->prefix . 'enam';
so your total code could be something like:
$wpdb->insert($yourtablename , array('username' => "enam" ,
'useremail' => "[email protected]"));
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
$wpdb->prefix . 'table_name'
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..)
function get_table_name() {
global $wpdb;
return $wpdb->prefix . 'table_name';
}
I think the wpdb->enam is incorrect, it doesnt exist , you just have to enter tablename there.
$wpdb->insert("table_name", array('username' => "enam" ,
'useremail' => "[email protected]"));