用WP3.1从插件插入数据库表中的数据

时间:2011-03-27 作者:enam

我是WP插件领域的新手。我试图在WP 3.1中开发一个插件,当我试图将数据插入到名为“的表中时”wp_enam“通过以下方式:

$wpdb->insert($wpdb->enam, array(\'username\' => "enam" ,
                                 \'useremail\' => "[email protected]"));
它不起作用。

我尝试通过以下方式进行调试:

$wpdb->show_errors();
$wpdb->insert($wpdb->enam, array(\'username\' => "enam" ,
                                 \'useremail\' => "[email protected]"));
$wpdb->print_error(); 
现在我从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]\')
正如您所看到的,mysql查询中没有显示表名。这是使用访问表名的正确方法吗$wpdb->my_table? I am using mysql. 提前谢谢。

Edit 1:看起来像$wpdb->tblname不再添加表前缀!根据Hal Stern、David Damstra和Brad Williams的“专业WordPress Wrox”(这是一本很棒的书),它应该可以工作。本书对上述功能的解释如下:

$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.
(第107页)

3 个回复
最合适的回答,由SO网友:user4254 整理而成

您可以检查数据库的数据库功能here. 对于表前缀问题,您应该使用$wpdb->prefix . \'enam\' 它将返回表前缀。只需将表名与此一起添加即可。所以总代码是:

$yourtablename =  $wpdb->prefix . \'enam\';
因此,您的总代码可能如下所示:

$wpdb->insert($yourtablename , array(\'username\' => "enam" ,
                             \'useremail\' => "[email protected]"));
编辑:如果需要更多信息,可以查看THIS 文章这篇文章对于使用数据库创建插件非常有用。

SO网友:depi

你应该使用

$wpdb->prefix . \'table_name\'
取而代之的是。

如果您不想通过代码重复表名,请将其保存在变量中或创建如下函数:(没什么了不起的,但我是这样使用它的,如果您只有一个自定义表,则可以使用它,因此它不是很通用的….)

function get_table_name() {
    global $wpdb;
    return $wpdb->prefix . \'table_name\';
}

SO网友:Patriek

我认为wpdb->enam不正确,它不存在,您只需要在那里输入tablename。

$wpdb->insert("table_name", array(\'username\' => "enam" ,
                             \'useremail\' => "[email protected]"));

用WP3.1从插件插入数据库表中的数据 - 小码农CODE - 行之有效找到问题解决它

用WP3.1从插件插入数据库表中的数据

时间:2011-03-27 作者:enam

我是WP插件领域的新手。我试图在WP 3.1中开发一个插件,当我试图将数据插入到名为“的表中时”wp_enam“通过以下方式:

$wpdb->insert($wpdb->enam, array(\'username\' => "enam" ,
                                 \'useremail\' => "[email protected]"));
它不起作用。

我尝试通过以下方式进行调试:

$wpdb->show_errors();
$wpdb->insert($wpdb->enam, array(\'username\' => "enam" ,
                                 \'useremail\' => "[email protected]"));
$wpdb->print_error(); 
现在我从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]\')
正如您所看到的,mysql查询中没有显示表名。这是使用访问表名的正确方法吗$wpdb->my_table? I am using mysql. 提前谢谢。

Edit 1:看起来像$wpdb->tblname不再添加表前缀!根据Hal Stern、David Damstra和Brad Williams的“专业WordPress Wrox”(这是一本很棒的书),它应该可以工作。本书对上述功能的解释如下:

$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.
(第107页)

3 个回复
最合适的回答,由SO网友:user4254 整理而成

您可以检查数据库的数据库功能here. 对于表前缀问题,您应该使用$wpdb->prefix . \'enam\' 它将返回表前缀。只需将表名与此一起添加即可。所以总代码是:

$yourtablename =  $wpdb->prefix . \'enam\';
因此,您的总代码可能如下所示:

$wpdb->insert($yourtablename , array(\'username\' => "enam" ,
                             \'useremail\' => "[email protected]"));
编辑:如果需要更多信息,可以查看THIS 文章这篇文章对于使用数据库创建插件非常有用。

SO网友:depi

你应该使用

$wpdb->prefix . \'table_name\'
取而代之的是。

如果您不想通过代码重复表名,请将其保存在变量中或创建如下函数:(没什么了不起的,但我是这样使用它的,如果您只有一个自定义表,则可以使用它,因此它不是很通用的….)

function get_table_name() {
    global $wpdb;
    return $wpdb->prefix . \'table_name\';
}

SO网友:Patriek

我认为wpdb->enam不正确,它不存在,您只需要在那里输入tablename。

$wpdb->insert("table_name", array(\'username\' => "enam" ,
                             \'useremail\' => "[email protected]"));

相关推荐

重置插件版本缓存|PRE_SET_SITE_TRANSPENT_UPDATE_PLUGINS

在我的插件中,我使用这些过滤器进行自动更新并检查许可证。add_filter( \'pre_set_site_transient_update_plugins\', array( &$this, \'check_for_update\' ) ); add_filter( \'plugins_api\', array( &$this, \'plugin_api_call\' ), 10, 3 ); 但正如我所看到的,WordPress在我的插件中更改了版本标签后,会调用该过