最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

insert data in database table from plugin with WP3.1

programmeradmin1浏览0评论

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->tblnamedo 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->tblnamedo 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
Add a comment  | 

3 Answers 3

Reset to default 5

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 :

$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]"));
发布评论

评论列表(0)

  1. 暂无评论